2013-07-24 57 views
1

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

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

但我会怎么做一个对象ID类似的东西?

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

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

我想查询(在蒙戈),对于其中的ObjectId与“51eed”开头的所有记录。非常感谢您的帮助。

回答

2

你可以简单地用一个范围搜索做到这一点,开始在"51eed0000000000000000000""51eee0000000000000000000"结束(注意 “d” - > “E”):

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

MEH说对了一半:P – Sammaye

+0

感谢您的快速回应家伙...非常有帮助。 – rasmeister

0

你可能只是它放入一个新的ObjectId0“补其余的就像:

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

应该做的伎俩。