2015-02-21 2 views
0

У меня есть коллекция товары, в которых у меня есть массив, хранящий IP-адрес всех клиентов, которые посетили URL элемента впроверить, если значение существует в массиве документов Монго

{ 
    "title" : "asdads", 
    "artist" : "adsdd", 
    "description" : "adas", 
    "category" : "sheetmusic", 
    "price" : 15, 
    "publish" : true, 
    "downloadUrl" : "https1f5c69ce0c9eb1bc5032362d853d", 
    "s3key" : "ee33e7320b8a4fe881f5c69ce0c9eb1bc5032362d853d", 
    "userId" : "LnsYqhsefu7ZmQmTq", 
    "views" : 0, 
    "downloads" : 1, 
    "likes" : 0, 
    "dislikes" : 0, 
    "createdAt" : ISODate("2015-02-21T17:17:40.491Z"), 
    "_id" : "GM8M37EWTfZ2Jwatu" 
    "IPs: [ 
    "0.0.0.0" 
    ] 
} 

я хочу знать, является ли данный документ позиции имеет IP-адрес в его массиве, если нет, то добавьте его, else верните true

Какой лучший и наиболее эффективный подход?

+0

вы можете показать нам свой документ? и, пожалуйста, уточните – styvane

+0

обновленное сообщение с примером документа – Tarlen

ответ

2

Вы можете сделать это, используя оператор $addToSet. Чтобы проверить, если массив уже содержит придала значения все, что вам нужно, это количество модифицированного документа, который вы можете получить с помощью nModified

db.collection.update({_id: "GM8M37EWTfZ2Jwatu"}, 
    {$addToSet: {IPs: "98.245.153.111"}} 
).nModified 

Выход

1 
+0

Да, но я также хочу вернуть логическое значение, если IP уже существует в массиве – Tarlen

+0

@Tarlen отредактировал мой ответ, чтобы добавить, что – styvane

Смежные вопросы