这是我的架构:
let userSchema = new Schema({
email: { type: String, required: true },
password: { type: String, required: true },
books: [{ cover: String, title: String, link: String }],
});
我正在将一个对象推送到books数组,只有该对象尚不存在。我不明白为什么这不起作用:我说找到用户,检查books
数组以确保标题不存在将新对象添加到books数组。但是重复数据仍会显示在我的数组中。
注意:查询正在一个函数内执行,该函数传递model
,user
,并且包含一个名为info
的图书数据的对象,因此info.title
。
model.findOneAndUpdate(
{ email: user.email, 'books.title': { $ne: 'info.title ' } },
{ $addToSet: { "books": { title: info.title, cover:
info.cover, link: info.link } } },
{ new: true },
(err, user) => {
if (err) throw err;
console.log(user);
}
)
欣赏方向
答案 0 :(得分:2)
来自MongoDB $ addToSet文档https://docs.mongodb.com/manual/reference/operator/update/addToSet/#behavior
找到一个好的答案如果值是文档,MongoDB确定文档是a 如果数组中的现有文档与要添加的文档匹配,则重复 文件准确;即现有文件具有完全相同的字段 和值和字段的顺序相同。因此,字段顺序 很重要,你不能指定MongoDB只比较一个子集 文档中的字段以确定文档是否为 复制现有的数组元素。