多个嵌入式文档的Mongoid分组

弗洛雷斯

我有一些文档大致具有以下结构:

{
 "_id": "derp",
  "name": "thing",
  "animal": {
    "_id": "abc",
    "stuff": [
      "blah",
      "wah"
    ]
  },
},
{
  "_id": "nerp",
  "person": {
    "_id": "bc",
    "enough": [
      "lah",
      "ah",
      "mwah"
    ]
  }
}

我正在计算数组“ stuff”和“足够”中的行。最初,我以为我可以放松一下,但是如果对每个嵌入式文档“ person”和“ animal”都调用一次,那么我将一无所获。

我最终进行了单独的查询,以获取“内容”和“足够”的每个内部数组的计数,但是我想在一个查询中完成所有操作。

有谁知道我将如何获取这些计数,然后将它们放在“ object_count”之类的单独字段中?

教授79

聊天和问题更新后-这是测试数据集上的有效解决方案:

var unwind = {
    $unwind : "$array"
}
var project = {
    $project : {
        _id : 1,
        array : {
            $cond : [{
                    $ne : ["$a", []]
                }, "$a", "$b"]
        }
    }
}

var group = {
    $group : {
        _id : "$_id",
        a : {
            $push : "$animal.stuff"
        },
        b : {
            $push : "$person.enough"
        }
    }
}
var group2 = {
    $group : {
        _id : "$_id",
        sum : {
            $sum : 1
        }
    }
}

db.info.aggregate([group, project, unwind, unwind, group2])

主要思想是将所有内容放入一个数组中,然后展开(在我们推动时,我们需要展开两次),最后计数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章