2011-04-28 5 views
1

Как проверить, содержит ли список1 A, а list2 не содержит A? как и песни1 песни2 является массивом (песни2 может быть пустым или не установлен)mongodb: массив содержит и массив не содержит

Я попробовал запрос:

{ 
    'list1':'A', 
    'list2':{ '$ne':'A'} 
} 

, но я получаю результаты с list1 содержит A и содержит песни2 А. если удалить 'list2':{ '$ne':'A'} ... результаты аналогичны, нравится list2 part do not metter

странно ... я что-то не так?

+0

вы можете показать вашей структуры документов и данных? –

+1

проклятье, его работа сейчас, я не знаю, что я делал .. действительно жаль .. правый синтаксис: {'list1': 'A', 'list2': {$ ne: 'A }} – xrado

+0

фактически не ..try этот пример вставки этого две записи { 'а1': [ 'А'], 'а2': [ 'А'] } { 'а1' : [ 'А'] } QUERY1 (2 результат) { 'а1': 'А' } Query2 (1 результат) { 'a1': 'А', 'a2': {$ пе: 'A'} } ..now обновить вторую запись { ' $ set ': { "a2.0":' A ' } } ..и попробуйте query2 .. такие же результаты !? , если я обновлю 2 вторую запись с полным набором Query2 работ ..strange найти показывают одни и те же данные – xrado

ответ

3

Я обновлял его неправильно. Должно быть так:

db.test.update({ _id: X }, {'$push': {"a2": 'A'}}); 

Или это:

db.test.update({ _id: X }, {'$set': {"a2": ['A']}}); 

документ выглядит следующим образом:

{ "_id" : ObjectId("4dbacb40696b6ede04c5ef97"), "a1" : [ "A" ], "a2" : 
{ "0" : "A" } } 

Где это правильно, что {"0": "A"} не равна A

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