2017-02-06 2 views
1

Это моя коллекция Пользовательдобавить массив в существующий вложенную массив без дубликатов MongoDB

{ _id: ObjectId("589803bf53860d4a3475afa3"), 
    "username": "fadeltd", 
    "gender": "Male", 
    "updatedAt": ISODate("2017-02-06T05:03:59.969Z"), 
    "createdAt": ISODate("2017-02-06T05:03:59.969Z"), 
    "shoppingList": [{ 
     "title": "Personal List", 
     "ingredients": ["5 Eggs"] 
    }] 
}) 

То, что я пытаюсь сделать, это нажать данные в мой список покупок, с $addToSet так, что не будет дублировать покупок список данных

Это мой сценарий

User.update({ 
     _id: ObjectId("589803bf53860d4a3475afa3"), 
     'shoppingList.title': "Personal List" 
    }, 
    { 
     $addToSet: { 
      "shoppingList.$.ingredients": ["5 Eggs", "3 Milks"] 
     } 
    }) 

Но когда я пытаюсь этот сценарий я получаю эту

{ _id: ObjectId("589803bf53860d4a3475afa3"), 
    "username": "fadeltd", 
    "gender": "Male", 
    "updatedAt": ISODate("2017-02-06T05:03:59.969Z"), 
    "createdAt": ISODate("2017-02-06T05:03:59.969Z"), 
    "shoppingList": [{ 
     "title": "Personal List", 
     "ingredients": ["5 Eggs", ["5 Eggs", "3 Milks"]], 
    }] 
}) 

Я хочу, чтобы ингредиенты быть ["5 Eggs", "3 Milks"] вместо Вложенный массив ["5 Eggs", ["5 Eggs", "3 Milks"]]

ответ

1

Используйте $each модификатор, который позволяет добавить несколько значений в массив

User.update(
    { 
     "_id": ObjectId("589803bf53860d4a3475afa3"), 
     "shoppingList.title": "Personal List" 
    }, 
    { 
     "$addToSet": { 
      "shoppingList.$.ingredients": { 
       "$each": ["5 Eggs", "3 Milks"] 
      } 
     } 
    } 
) 
Смежные вопросы