小编Mat*_*ali的帖子

在聚合中生成 ObjectID

我有一个名为“人员”的集合(见下文),其中包含他们的个人详细信息和技能。我想从该集合中创建一个新集合(定期更新),其中包含填充了 ObjectID 的特定技能的出现总数。应使用正确的对象 ID 更新人员集合中的技能。

现在我有以下查询:

db.people.aggregate([ 
    { $unwind: "$expertise" },
    { $group : { 
        _id: "$expertise.item",
        count: { $sum: 1 },
        people: { $push: "$_id" } 
        } 
    }
])
Run Code Online (Sandbox Code Playgroud)

这给了我新的集合,但不幸的是我无法在该查询中生成唯一的 objectID。它一直告诉我需要一个累加器对象。

如何生成每个技能具有唯一 ObjectID 的技能数据库,并使用正确的技能 ObjectID更新人员集合?


人们

包含人物、他们的个人详细信息和他们的特定技能的集合。我已经删除了此示例的大部分数据。

{
"_id" : ObjectId("591c5d9be75d8a0d34f61786"),
"id" : 1,
"username" : "user@name.com",
"expertise" : [ 
    {
        "niveau" : 5,
        "item" : "High Availability Systems"
    }, 
    {
        "niveau" : 8,
        "item" : "Object Oriented Design"
    }
], …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-query aggregation-framework objectid

5
推荐指数
1
解决办法
7721
查看次数