MongoDB - 聚合 - 获取数组中的唯一项

标签 mongodb mongodb-php mongodb-query

这是我的 MongoDB 集合:

{
    "_id" : ObjectId("515d8f53175b8ecb053425c2"),
    "category" : "Batteries",
    "products" : [
        {
            "brand" : "Duracell",
            "item" : [
                "AA",
                "AAA"
            ]
        },
        {
            "brand" : "Everyday",
            "item" : [
                "9V",
                "AA",
                "12V"
            ]
        }
    ]
}

我需要的输出是

1) 所有项目的唯一列表

{["AA", "AAA", "9V", "12V"]}

和 2.每个产品的唯一项目列表

{
    "category" : "Batteries",
    "item": ["AA", "AAA", "9V", "12V"]
}

我对 MongoDB 非常陌生,我尝试了不同的聚合函数,但似乎没有任何效果。请帮忙。

最佳答案

经过几次尝试,我解决了这个问题。命令如下:

db.xyz.aggregate( {$project: {a: '$products.item'}}, 
    {$unwind: '$a'}, 
    {$unwind: '$a'}, 
    {$group: {_id: 'a', items: {$addToSet: '$a'}}});

db.xyz.aggregate( {$project: {category: 1, a: '$products.item'}}, 
    {$unwind: '$a'}, 
    {$unwind: '$a'}, 
    {$group: {_id: '$category', items: {$addToSet: '$a'}}});

关于MongoDB - 聚合 - 获取数组中的唯一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15814526/

相关文章:

mongodb - ReactiveMongo 0.9 : Joda Datetime Implicit Conversion for Macros. 处理程序

mongodb - Mongo 查询嵌入对象属性的存在和值

mongodb - Mongo 聚合可以做什么/Mongo 聚合的性能

mongodb - 将聚合操作合并到单个结果中

mongodb - 使用 MongoDB 压缩数组

node.js - Mongoose:如何将字段/值插入现有子文档中

javascript - Mongodb Nodejs 正则表达式查询

php - 如何使用 PHP 运行多个 linux 命令

mysql - MongoDB 相当于 NOW() + INTERVAL

mongodb - 如何在 MongoDB 中查找特定类别的最常见值?