是否可以$addToSet
并确定哪些项目已添加到该集合中?
即。 $addToSet
标记到帖子并返回实际添加的帖子
答案 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>
因此,只要您使用“默认”实现方法在文档修改之前返回文档的“原始”状态,您就可以按照原样“发现差异”,如代码所示示例
但是,通过“更新”操作执行此操作是不可能的,因为它们可能会影响一个或多个对象,并且永远不会返回此详细信息。