gpt4 book ai didi

arrays - Mongo 查询 - 推送唯一项并保留数组中的顺序

转载 作者:行者123 更新时间:2023-12-05 08:30:02 25 4
gpt4 key购买 nike

所以这是一个相当常见的场景,我想在数组中添加唯一项并保留顺序 - 我有一组遵循此模式的 mongo 文档:

{
_id: ObjectID,
name: string,
email: string
favorites: [array of objectIDs]
}

仅当我尝试添加的 ID 不存在时,我才尝试更新收藏夹数组。我还需要在数组中保留顺序,因此只想在末尾追加。

我在使用以下更新命令时遇到“无法读取 null 的属性 '_id'” 错误...我做错了什么?

Customer.findOneAndUpdate(
{
_id: customerId, //find correct customer doc
favorites: {
$ne: itemId //only push if array doesn't already contain
}
},
{
$push: {
favorites: itemId
}
},
{ new: true} //return updated doc
)

我正在使用 $push 来保持顺序,并想使用 $ne 运算符来防止客户收藏夹数组中出现重复项。如果我取出收藏夹 block ,它可以找到该文档,但会添加重复项。一旦我用 $ne 添加收藏夹过滤器,它就会提示“无法读取 null 的属性‘_id’”。

最佳答案

尝试使用 $addToSet 而不是 $push

默认情况下 $addToSet 仅在不存在时才添加到集合中。例如……

{
$addToSet: {
favorites: itemId
}
}

来源:https://database.guide/mongodb-push-vs-addtoset-whats-the-difference/

关于arrays - Mongo 查询 - 推送唯一项并保留数组中的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66879998/

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