javascript - 如何将一个文档保存到mongodb中同一数据库的两个不同集合中

标签 javascript mongodb typescript nestjs

我正在处理 Nestjs,我想从 Collection_1 中获取一个文档并将该文档保存到 Collection_2 中。我使用了 $out 聚合,但我只能同时保存集合 2 中的一个文档,但当我尝试保存第二个文档时,第一个文档消失了。我想保存从集合 1 中检索到的集合 2 中的每个文档

服务代码:

async order(name){
    const list=await this.usersmodel.find({name:name}).exec()
    //return list
    try{
        if(list){
            const x=await this.usersmodel.aggregate([
                { $match: { name: name } },
                {$out:"payment"}
            ])
            return "data saved in payment collection"
        }
    }
    catch(error){
        return(error.message)
    }
}

Controller 代码:

@Post('orderdata')
async orderdata(@Body('name')name){
    return this.usersService.order(name)
}

最佳答案

如果您使用的是 Mongo -v 4.2+,您可以使用 $merge

await this.usersmodel.aggregate([
    {
        $match: {
            name: name
        }
    },
    {
        $merge: "payment"
    }
])

$merge 还有更多选项允许您根据需要更新现有文档。

不幸的是,如果您使用的是较旧的 Mongo 版本,则无法通过 1 个操作完成此操作,您必须首先查询 collection1,然后单独插入到 collection2。

关于javascript - 如何将一个文档保存到mongodb中同一数据库的两个不同集合中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61716015/

相关文章:

angular - Jwt token 到期, Angular 为6

javascript - 几秒钟后消失的网站介绍页面

ruby - mongo - ruby 连接问题

python - 动态更新 mongodb

visual-studio - 更改为 SharePoint 后自动上传 Typescript 文件

javascript - 尝试使用 Object.entries<T>(Enum).map() 映射 TS 中的枚举,但仅适用于基于字符串的枚举?

javascript - ColdFusion 中的 AJAX 请求

javascript - Ace 编辑器 ace.js 文件大小

javascript - 数据从 PHP 到 JS - Google 日历 + CanvasJS

node.js - 使用 NodeJs 中的回调来实现 MongoDB 4.0 的事务?