我想查询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”开头的所有记录。非常感谢您的帮助。
答案 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")}})
应该做的伎俩。