访问MongoDB中的嵌套对象

时间:2014-06-06 15:04:57

标签: mongodb nested

我们有一个具有以下架构的MongoDB集合。

    Sales {
       salesID:"SO-0002"
       dispatches: [
          {
           "dispatchNo" : "SO-0002/dispatch/1",
        "date" : "2014-05-31T18:30:00.000Z",
        "location" : "l1",
        "items": [{
                     //itemDetails
                 }]
          },
          {
           "dispatchNo" : "SO-0002/dispatch/2",
        "date" : "2014-05-31T18:30:00.000Z",
        "location" : "l2",
        "items": [{
                     //itemDetails
                 }]
          }
       ]
    }

执行以下查询后:

db.sales.find({salesOrderNo:"SO-0002",'dispatches.dispatchNo':"SO-0002/dispatch/1"}).pretty()

我们希望只获得调度1的详细信息,但我们仍然会获得所有调度的详细信息。

我们错过了什么吗?

感谢。

1 个答案:

答案 0 :(得分:1)

是。这是预期的行为。 dispatches是父文档中的数组。匹配文档时,将完整返回文档。解决此问题的唯一方法是将模式更改为多个集合,或使用聚合框架或map / reduce。