是否可以$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/