mongo objectid'包含'查询

时间:2013-07-24 14:30:01

标签: mongodb objectid

我想查询MongoDB数据库中的集合,以查找包含ObjectID的一部分的所有记录。对于普通字符串,我可以使用这样的正则表达式:

db.teams.find({"some_string": /^51eed/})

但是我如何在ObjectID上做类似的事情?

具体来说,我有一个看起来像这样的集合:

{ "status" : 0, "_id" : ObjectId("51e97ff613e737801d000002") }
{ "status" : 0, "_id" : ObjectId("51ee7513d1f7c57420000002") }
{ "status" : 0, "_id" : ObjectId("51eed9dd5b605af404000002") }
{ "status" : 0, "_id" : ObjectId("51eedab39108d8101c000002") }

我想查询(在mongo中)ObjectId以“51eed”开头的所有记录。非常感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

您可以使用范围搜索执行此操作,从"51eed0000000000000000000"开始,到"51eee0000000000000000000"结束(请注意" d" - >" e" ):

db.teams.find( { 
    _id: {
        $gte: ObjectId("51eed0000000000000000000"),
        $lt:  ObjectId("51eee0000000000000000000"),
    } 
} )

答案 1 :(得分:0)

你可以把它放到一个新的ObjectId中,然后用0填充其余部分:

db.teams.find({_id:{$gte:ObjectId("51eed0000000000000000000")}})

应该做的伎俩。