怎样才能有一个类似于SQL "...WHERE _id > threshold“的mongo查询呢?
我尝试了以下方法,但没有给出任何结果。
db.things.find(_id: {$gt: someid} });是不是因为_id字段有点特殊,因为它的格式是?
_id : {"$oid" : "someid"} 发布于 2012-06-15 22:15:01
比较like与like
mongo中的_id键(默认情况下)不是一个字符串--它是一个mongo objectId。
您需要比较相同的类型才能得到有意义的结果:
var ObjectId = require('mongodb').ObjectID;
var oid = new ObjectId();
db.things.find(_id: {$gt: oid});不读取mongoexport文件
Mongo导出文件如下所示:
{ "_id" : { "$oid" : "4f876b00c56da1fa6a000030" }, ...这是一个对象id的json表示。Mongo不希望你在实际查询数据库时使用这种语法。这将不起作用:
# will not work
db.things.find("_id.$oid": {$gt: "string"});字符串形式的id
如果你有一个字符串形式的id,你会这样做:
var ObjectId = require('mongodb').ObjectID;
var str = "123456789012345678901234";
var oid = new ObjectId(str);
db.things.find(_id: {$gt: oid});部分字符串形式的id
如果你的字符串不是一个有效的oid (不是24个字符长度),你只会从mongo得到一个异常-或者根据你的驱动程序,一个新的oid。如果你有一个部分的对象id,你可以用0来填充一个有效的oid,从而允许通过部分对象id来查找。例如:
var ObjectId = require('mongodb').ObjectID;
var oid = new ObjectId(str + "0000");
db.things.find(_id: {$gt: oid});https://stackoverflow.com/questions/11052286
复制相似问题