【发布时间】:2015-02-11 16:13:56
【问题描述】:
我想将一个文件添加到文档中作为聚合的结果。
聚合返回多个项目,但更新只更新一个。
为什么只有一个?
这是我的代码
var maxCount = db.technology.aggregate({
$group: {
_id:"$_id",
stackMax: {
$max:"$stackTimeLine.statistics.count"}
}
});
while(maxCount.hasNext()) {
var item=maxCount.next();
db.technology.update(
{_id:item._id},
{$set: {'stackTimeLine.latest':item.stackMax[0]}}
);
}
结果:
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
【问题讨论】:
-
如果您想要多次更新,您需要添加 multi:true。 db.collection.update(
, , { multi: true } ) 尝试:db.technology.update( {_id:item._id}, {$set: {'stackTimeLine.latest':item.stackMax [0]}}, {'multi':true} ); -
我试过了,没有运气。此外,每次更新都应该只更新一个条目。不需要“多”。
-
您的聚合实际上并没有做任何事情。然后你将一个字段设置为它的当前值,所以它是一个空操作。您能描述一下您要添加到文档中的内容吗?
-
我想从 statistics 数组中的字段 count 中获取最大值,并将该值分配给封闭文档中的新字段。聚合工作正常并返回预期结果,但更新不
标签: mongodb