通过指定ts.t(ts是时间戳类型)
找不到条目挖掘oplog,我想知道一秒钟内有多少次操作。
无法通过指定时间戳字段找到条目,也可以通过其他字段找到。 $ 在mongo shell中:
> 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
答案 0 :(得分:7)
我相信ts字段实际上是一个Timestamp字段,控制台只是试图为你简化它(这确实使它非常误导)。您可以像这样执行查询,它应该可以工作:
db.oplog.rs.find({ ts: Timestamp(1335200998000, 540)});
您可以正常使用$ gte和$ lte:
db.oplog.rs.find({ ts: {$gte: Timestamp(1335100998000, 1)}});
db.oplog.rs.find({ ts: {$lte: Timestamp(1335900998000, 1)}});
第二个参数是给定秒内操作的增量序数。
答案 1 :(得分:1)
你只是在使用“.test”而你不应该这样做。以下作品:
db.oplog.rs.find( {'ts.t': 1335200998000 } );