gpt4 book ai didi

node.js - 如果对象字段在 MongoDB/Mongoose 中是唯一的,则将对象添加到数组中

转载 作者:太空宇宙 更新时间:2023-11-03 23:26:48 25 4
gpt4 key购买 nike

这是我的架构:

let userSchema = new Schema({
email: { type: String, required: true },
password: { type: String, required: true },
books: [{ cover: String, title: String, link: String }],
});

仅当该对象尚不存在时,我才会将对象推送到 books 数组。我不明白为什么这不起作用:我是说找到用户,检查 books数组以确保 title 不存在,将新对象添加到 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);
}
)

认清方向

最佳答案

来自 MongoDB $addToSet 文档 https://docs.mongodb.com/manual/reference/operator/update/addToSet/#behavior

If the value is a document, MongoDB determines that the document is a duplicate if an existing document in the array matches the to-be-added document exactly; i.e. the existing document has the exact same fields and values and the fields are in the same order. As such, field order matters and you cannot specify that MongoDB compare only a subset of the fields in the document to determine whether the document is a duplicate of an existing array element.

您还可以在这里找到很好的答案 MongoDB - $addToSet on a list of Embedded Document

关于node.js - 如果对象字段在 MongoDB/Mongoose 中是唯一的,则将对象添加到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43026721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com