gpt4 book ai didi

mongodb - Mongo聚合没有更新实际文档

转载 作者:行者123 更新时间:2023-12-03 08:41:54 27 4
gpt4 key购买 nike

As can be seen from the below example when I do aggregation it spits out the required result but the actual result is not getting replaces. Could some tell me how to persist aggregate o/p?

> db.demo95.find();
{ "_id" : ObjectId("5eed924ae3fc5c755e1198a2"), "Id" : "5ab9cbe531c2ab715d42129a" }
> db.demo95.aggregate([ { "$addFields": { "Id" : { "$toObjectId": "$Id" } }} ])
{ "_id" : ObjectId("5eed924ae3fc5c755e1198a2"), "Id" : ObjectId("5ab9cbe531c2ab715d42129a") }
> db.demo95.find();
{ "_id" : ObjectId("5eed924ae3fc5c755e1198a2"), "Id" : "5ab9cbe531c2ab715d42129a" }

最佳答案

聚合应该读取集合中的数据。您可以使用 $out 将输出写入另一个集合中或$merge阶段。

仅从 v4.4 开始(截至 2020 年 6 月 20 日尚未普遍可用),您可以使用 $merge阶段输出到same collection .

但是,从版本 4.2 开始,您可以使用 "updates with aggregation pipeline" 。管道的语法是相同的,但您只能使用选定的阶段。

您的查询可以翻译为:

db.demo95.updateMany({}, [ { "$addFields": { "Id" : { "$toObjectId": "$Id" } }} ])

引用updateMany with aggregation pipeline了解更多信息。

如果您对updateMany有疑问,可以引用另一个answer通过 @whoami关于另一个问题:

As of now, aggregation-pipeline in .updateMany() is not supported by many clients even few mongo shell versions - back then my ticket to them got resolved by using .update(), if it doesn't work then try to use update + { multi : true }.

关于mongodb - Mongo聚合没有更新实际文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62481782/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com