【问题标题】:mongo objectid 'contains' querymongo objectid“包含”查询
【发布时间】:2013-07-24 14:30:00
【问题描述】:

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

【问题讨论】:

    标签: mongodb objectid


    【解决方案1】:

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

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

    【讨论】:

    • 感谢大家的快速回复...非常有帮助。
    【解决方案2】:

    您可以将其放入一个新的ObjectId,然后用0 之类的填充其余部分:

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

    应该做的伎俩。

    【讨论】:

      猜你喜欢
      • 2014-07-01
      • 2016-12-15
      • 2012-03-12
      • 2018-02-13
      • 1970-01-01
      • 2012-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多