linux - 如何保存聚合变化?

标签 linux database mongodb aggregate

我正在执行以下操作:

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/

相关文章:

mongodb - 不安装数据库的mongoimport

c - 更新 MongoDB 新 C 驱动程序中的数组

linux - Zend框架主页

java - 在 shell 脚本中访问 Jar 的多个输出

python - Amazon Linux AMI EC2 - librrd.so.2 依赖性问题

php - 帮助逻辑设置我的数据库表

linux - Unix 中 mysql 的自动备份脚本

php - 如何连接到heroku mysql数据库

mysql - 使用 SQL 查询得到一个奇怪的语法错误

sql - NoSQL 数据库