$ addToSet并返回添加的所有新项目?

时间:2014-04-17 08:46:26

标签: node.js mongodb

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

即。 $addToSet标记到帖子并返回实际添加的帖子

1 个答案:

答案 0 :(得分:0)

不是真的,而不是单一的陈述。您最接近的方法是使用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抽象,实际上不是 nodejs 本机节点驱动程序或Mongoose语法的一般语法,但它确实描述了基本前提。< / p>

因此,只要您使用“默认”实现方法在文档修改之前返回文档的“原始”状态,您就可以按照原样“发现差异”,如代码所示示例

但是,通过“更新”操作执行此操作是不可能的,因为它们可能会影响一个或多个对象,并且永远不会返回此详细信息。

相关问题