Mongo ObjectId“包含”查询

4
我想查询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个回答

5

您可以通过范围搜索来完成此操作,从"51eed0000000000000000000"开始,以"51eee0000000000000000000"结束(注意 "d" -> "e"):

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

谢谢大家的快速回复,非常有帮助。 - rasmeister

1
你可以将其放入一个新的ObjectId中,并用0填充其余部分,例如:
db.teams.find({_id:{$gte:ObjectId("51eed0000000000000000000")}})

应该可以解决问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接