【问题标题】:Get multiple slices of data from single MongoDB query从单个 MongoDB 查询中获取多个数据切片
【发布时间】:2018-05-02 09:05:13
【问题描述】:

好的,假设我有一个名为 Baz 的文档集合,假设它看起来像:

[
    { _id: 1, foo: true, bar: true },
    { _id: 2, foo: false, bar: true },
    { _id: 3, foo: true, bar: false },
    { _id: 1, foo: false, bar: false }
]

我想查询它并得到这样的结果:

[
    { isFoo: [
        { _id: 1, foo: true, bar: true },
        { _id: 3, foo: true, bar: false }
    ], isBar: [
        { _id: 1, foo: true, bar: true },
        { _id: 2, foo: false, bar: true }
    ]}
]

如您所见,它为我提供了包含foo: true 的所有文档的数组以及包含bar: true 的所有文档的列表。这就是我想要的结局!在此先感谢 SO 社区!

总之

可以针对 Baz 编写什么查询以获得所需的结果?

【问题讨论】:

    标签: mongodb nosql aggregation-framework


    【解决方案1】:

    我认为$facet 运算符几乎完全提供您所寻求的,唯一的区别是$facet 您将从aggregate() 获得一个带有两个数组字段的文档:

    {
        "isFoo" : [
           {  "_id" : 1,  "foo" : true,  "bar" : true  },
           {  "_id" : 3,  "foo" : true,  "bar" : false  }
        ],
        "isBar" : [
           {  "_id" : 1,  "foo" : true,  "bar" : true },
           {  "_id" : 2,  "foo" : false, "bar" : true }
        ]
    }
    
    
    db.baz.aggregate([
      {$facet: {
        "isFoo": [
          {$match: {"foo": true}}
          ]
        ,"isBar": [
          {$match: {"bar": true}}
          ]
       }}
     ]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-04
      • 2015-06-18
      • 1970-01-01
      相关资源
      最近更新 更多