我想查询 MongoDB 数据库中的集合以查找包含部分 ObjectID 的所有记录。对于普通字符串,我可以使用如下正则表达式:
db.teams.find({"some_string": /^51eed/})
Run Code Online (Sandbox Code Playgroud)
但是我该如何对 ObjectID 执行类似的操作呢?
具体来说,我有一个看起来像这样的集合:
{ "status" : 0, "_id" : ObjectId("51e97ff613e737801d000002") }
{ "status" : 0, "_id" : ObjectId("51ee7513d1f7c57420000002") }
{ "status" : 0, "_id" : ObjectId("51eed9dd5b605af404000002") }
{ "status" : 0, "_id" : ObjectId("51eedab39108d8101c000002") }
Run Code Online (Sandbox Code Playgroud)
我想查询(在 mongo 中)ObjectId 以“51eed”开头的所有记录。非常感谢您的帮助。
您可以简单地通过范围搜索来完成此操作,开始于"51eed0000000000000000000"并结束于"51eee0000000000000000000"(注意“d”->“e”):
db.teams.find( {
_id: {
$gte: ObjectId("51eed0000000000000000000"),
$lt: ObjectId("51eee0000000000000000000"),
}
} )
Run Code Online (Sandbox Code Playgroud)