node.js - $addToSet 并返回所有添加的新项目?

标签 node.js mongodb

是否可以$addToSet并确定哪些项目已添加到集合中?

$addToSet 标记到帖子并返回实际添加的内容

最佳答案

事实并非如此,而且没有任何一句话。您可以获得的最接近的是 findAndModify()方法,并将原始文档表单与您在 $addToSet 中提交的字段进行比较声明:

因此考虑初始文档:

{
    "fields": [ "B", "C" ]
}

然后处理这段代码:

var setInfo = [ "A", "B" ];

var matched = [];

var doc = db.collection.findAndModify(
    { "_id": "myid" },
    {
        "$addToSet": { "fields": { "$each": setInfo } }
    }
);

doc.fields.forEach(function(field) {
    if ( setInfo.indexOf(field) != -1 ) {
        matched.push(field);
    }
}); 

return matched;

因此,这是方法的基本 JavaScript 抽象,实际上不是 native Node 驱动程序或 Mongoose 语法的 nodejs 通用语法,但它确实描述了基本前提。

因此,只要您使用返回文档修改之前的“原始”状态的“默认”实现方法,您就可以像代码示例中所示那样玩“找茬”游戏。

但是在一般的“更新”操作上执行此操作是不可能的,因为它们被设计为可能影响一个或多个对象并且从不返回此详细信息。

关于node.js - $addToSet 并返回所有添加的新项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23128531/

相关文章:

javascript - 如何在 Node 表达选项qs中传递多个值?

javascript - Leaflet-Image() 和 Leaflet.print() 不起作用

Django + 什么NOSQL在生产中使用最成熟?

javascript - 请求正文已声明,但日志显示它在客户端和服务器端均未定义

javascript - 如何同时从函数返回值和 promise ?

mongodb - Docker top导致没有这样的容器

c# - MongoDB C# 驱动程序 - 更改继承类的 Id 序列化

mongodb - 使用 Mongoose 找不到按 ObjectId 搜索的文档

javascript - 异步调用链,其中最后一个调用与第一个调用进行比较

java - 如何根据文档中的泛型类型使用 MongoRepository 存储到不同的集合