我正在执行以下操作:
db.emails.aggregate(
[
{$addFields : {arr : {$objectToArray : "$$ROOT"}}},
{$project : { pass : {$slice : ["$arr.v", 1, 20 ] }}}
]
).pretty()
当我退出 session /shell 时,更改没有保存。
有人可以指导我如何将此修改应用到整个集合并保存吗?
最佳答案
看起来像是 How to merge multiple fields in a collection? 的延续
你可以$out
到新的集合,检查数据,重命名为旧的集合名称删除旧的数据
db.emails.aggregate(
[
{$addFields : {arr : {$objectToArray : "$$ROOT"}}},
{$project : { pass : {$slice : ["$arr.v", 1, 20 ] }}},
{$out : "new_emails"} // out to new collection
]
).pretty()
db.new_emails.renameCollection('emails', true); // rename collection, true - dropTarget
关于linux - 如何保存聚合变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48413415/