首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB无法通过指定ts.t找到条目(ts是时间戳类型)

MongoDB无法通过指定ts.t找到条目(ts是时间戳类型)
EN

Stack Overflow用户
提问于 2012-04-28 11:48:39
回答 2查看 2.8K关注 0票数 4

无法通过指定ts.t找到条目(ts是时间戳类型)

深入分析oplog,我想知道一秒钟内有多少个操作。

无法通过指定时间戳字段找到条目,可以使用其他字段。$以mongo shell为单位:

代码语言:javascript
复制
> db.oplog.rs.findOne()
{
    "ts" : {
        "t" : 1335200998000,
        "i" : 540
    },
    "h" : NumberLong("4405509386688070776"),
    "op" : "i",
    "ns" : "new_insert",
    "o" : {
        "_id" : ObjectId("4f958fad55ba26db6a000a8b"),
        "username" : "go9090",
        "message" : "hello, test.",
    }
}
> db.oplog.rs.find().count()
419583
> db.oplog.rs.test.find({"ts.t":1335200998000}).count()
0
> db.oplog.rs.test.find({"ts.t":/^1335200998/}).count()
0
> db.oplog.rs.test.find({ts:{ "t" : 1335200998000, "i" : 540 }}).count()
0
EN

回答 2

Stack Overflow用户

发布于 2012-04-28 16:57:07

我相信ts字段实际上是一个Timestamp字段,控制台只是试图为您简化它(这确实使它非常容易误导)。您可以像这样执行查询,它应该可以工作:

代码语言:javascript
复制
db.oplog.rs.find({ ts: Timestamp(1335200998000, 540)});

您可以正常使用$gte和$lte:

代码语言:javascript
复制
db.oplog.rs.find({ ts: {$gte: Timestamp(1335100998000, 1)}});
db.oplog.rs.find({ ts: {$lte: Timestamp(1335900998000, 1)}});

第二个参数是给定秒内操作的递增序数。

票数 7
EN

Stack Overflow用户

发布于 2012-04-28 17:22:04

您只是简单地使用".test“,而您不应该这样做。以下是工作原理:

代码语言:javascript
复制
db.oplog.rs.find( {'ts.t': 1335200998000 } );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10360404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档