推送到MongooseJS Subdoc而不创建重复

时间:2016-09-16 01:56:11

标签: mongodb mongoose

我有一个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的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

使用$ ne避免重复

List.findOneAndUpdate( {_id:listId},{items.item: {$ne: itemId}} { $push: { items: {item:itemId, isSelected:false} } });

      `