从不同集合中的数据创建新条目 (MongoDb)

Posted

技术标签:

【中文标题】从不同集合中的数据创建新条目 (MongoDb)【英文标题】:Creating a new entry from data from a different collection (MongoDb) 【发布时间】:2018-05-31 13:55:18 【问题描述】:

我想根据来自其他集合的条目创建一个新条目。我有一些默认字段。

在 sql 中会是这样的:

INSERT INTO collection1 (field1, field2, field3)
SELECT field_1, field_2, "manualValue" as field3 FROM collection2

在 mongo 中的 Ofc 不会有任何目标字段。在我的情况下 field_1 将是一个数组。 一位同事说应该用 $facet 来完成,但我真的不知道该怎么做。

感谢您的帮助。

【问题讨论】:

【参考方案1】:

有一个$out 运算符可以与INSERT INTOSELECT 在SQL 语法中的工作方式相同。基本上,它需要您的聚合管道并将其重定向到指定的集合,但有一个警告:它创建新集合或替换现有集合,因此您不能将结果“附加”到现有集合。将您的 SQL 转换为 Mongo:

db.collection2.aggregate([
    
        $project: 
            field_1: 1,
            field_2: 1,
            field_3: "manualValue"
        
    ,
    
        $out: "collection1"
    
])

【讨论】:

以上是关于从不同集合中的数据创建新条目 (MongoDb)的主要内容,如果未能解决你的问题,请参考以下文章

从 Node.js 向 MongoDB 集合插入不同类型的值

如何在 MongoDB 中按日期分组

为 MongoDB 中的每个新对象创建多个集合是不是错误?

MongoDB 快速入门

MongoDB聚合查询返回集合中每年每月的条目总数,按位置值分组

MongoDB 将所有现有索引迁移到新数据库