3

我想查询 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”开头的所有记录。非常感谢您的帮助。

4

2 回答 2

3

您可以通过范围搜索简单地做到这一点,开始"51eed0000000000000000000"和结束于"51eee0000000000000000000"(注意“d”->“e”):

db.teams.find( { 
    _id: {
        $gte: ObjectId("51eed0000000000000000000"),
        $lt:  ObjectId("51eee0000000000000000000"),
    } 
} )
于 2013-07-24T14:37:47.933 回答
0

您可以将其放入一个新的并用'ObjectId填充其余部分:0

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

应该做的伎俩。

于 2013-07-24T14:33:00.637 回答