【问题标题】:Get record of mongo from list array mongo从列表数组 mongo 中获取 mongo 的记录
【发布时间】:2012-03-08 17:00:24
【问题描述】:

我用的是mongo,这里有点小问题。我想获得一条记录,但我只有记录内的数组列表的 id。这就是我的数据的样子。

{    
   "_id": ObjectId("1113000001"),    
   "menu": "desertsunday",   
  "fruit": {
      "0": ObjectId("102b000000"),
      "1": ObjectId("5200000000"),
      "2": ObjectId("2900000000"),
      "3": ObjectId("9870000002")   } 
 }

我只有 102b000000 用于获取记录,我需要从那里获取菜单,但我无法使用标准 mongo 获取它。有人可以帮帮我吗?

【问题讨论】:

    标签: arrays mongodb atomic


    【解决方案1】:

    我同意 Andrew 所说的大部分内容,但相反,我会重新设计架构,以便您实际上拥有一个数组。在这种情况下,您的文档将如下所示:

    { "_id": ObjectId("1113000001"), “菜单”:“沙漠周日”, “水果”: [ ObjectId("102b000000"), ObjectId("5200000000") ] }

    然后您可以使用以下命令获取根文档:

    db.items.find({"fruit": ObjectId("102b000000")})

    【讨论】:

    • 是的,如果他真的不需要水果的序数,那么 id 数组将是更好的选择。
    【解决方案2】:

    实际上你模式中的水果不是数组,它是对象列表,因此只有一种方法可以通过一个水果 id 获取根文档:

    db.items.find({"fruit.0": ObjectId("102b000000")}) 
    

    在上述查询中,您应该知道要获取根文档的水果序数。

    但是如果你可以重新设计你的数据库如下:

    {    
       "_id": ObjectId("1113000001"),    
       "menu": "desertsunday",   
       "fruit": [
          { i:0, id: ObjectId("102b000000") },
          { i:1, id: ObjectId("5200000000") }
        ]
    }
    

    您可以通过嵌入的数组项 id 轻松获取根文档:

    db.items.find({"fruit.id": ObjectId("102b000000")}) 
    

    【讨论】:

      猜你喜欢
      • 2020-05-26
      • 1970-01-01
      • 1970-01-01
      • 2021-01-23
      • 2018-11-29
      • 1970-01-01
      • 2012-01-29
      • 2021-12-14
      • 1970-01-01
      相关资源
      最近更新 更多