MongoDb: добавить элемент в массив, если он не существует
Я использую node.js и Mongo.db(я недавно на Mongo). У меня есть такой документ:
Tag : {
name: string,
videoIDs: array
}
Идея заключается в том, что сервер получает JSON, например
JSON: {
name: "sport",
videoId: "34f54e34c"
}
с этим JSON, он должен найти тег с тем же именем и проверить, есть ли в массиве videoId
, если нет, вставьте его в массив.
Как проверить массив и добавить данные?
Ответы
Ответ 1
Вы можете использовать оператор $addToSet
, чтобы проверить существо, прежде чем добавить элемент в массив.
db.tags.update(
{name: 'sport'},
{$addToSet: { videoIDs: "34f54e34c" } }
);
В этом примере инструкции обновления mongoDB найдет документ TAG, который соответствует имени == 'sport', а затем проверьте, содержит ли массив идентификаторов видеоизображений '34f54e34c'. Если нет, добавьте его в массив.
Подробное использование $addToSet, пожалуйста, прочитайте здесь.
Ответ 2
Оператор $addToSet проверяет наличие пустого или существующего массива в документе.
db.col_name.update({name :"name_for_match"},{$addToSet : { videoId : "video_id_value"}})
Ответ 3
Я не тестировал его, но вы можете попробовать что-то вроде:
yourDb.find({ name: "sport",
videoIDs: { $in: ["34f54e34c"] } })
.update({$addToSet: { videoIDs: "34f54e34c" }});
Если вам нужно: MongoDb в реализации nodeJs, вы можете начать с:
http://jsfiddle.net/1ku0z1a1/