我有一个Lists
的MongooseJS架构,其中每个列表都包含一个ListItems
数组。每个ListItem
只是对Item
的引用和isSelected
的标记。像这样:
const ListItemSchema = new mongoose.Schema({
item: { type:mongoose.Schema.Types.ObjectId, ref:'Item' },
isSelected: Boolean,
});
const ListSchema = new mongoose.Schema({
name: String,
items: [ListItemSchema],
});
我只需使用Item
即可将List
推送到$push
。
List.findOneAndUpdate(
{_id:listId},
{
$push: {
items: {item:itemId, isSelected:false}
}
}
);
这有效,但它允许我将同一Item
推送到List
不止一次。
在检查重复项时,在此类结构中添加Items
的最佳方法是什么?
答案 0 :(得分:0)
使用$ ne避免重复
List.findOneAndUpdate( {_id:listId},{items.item: {$ne: itemId}} { $push: { items: {item:itemId, isSelected:false} } });
`