2011-04-28 31 views
1

如何檢查list1是否包含A,list2是否包含A? 兩個列表1和列表2的陣列(列表2可以爲空或不設置)mongodb:array contains和array不包含

我試着查詢:

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

但我發現與列表1的結果包含A和list2中包含A. 如果我刪除'list2':{ '$ne':'A'} ...結果是一樣的,喜歡list2部分不要metter

奇怪...我做錯了什麼?

+0

可以顯示你的文件結構和數據? – 2011-04-28 17:08:41

+1

該死的,現在工作,我不知道我在做什麼..im真的很抱歉.. 正確的語法是: {'list1':'A','list2':{$ ne:'A 「}} – xrado 2011-04-28 17:45:26

+0

實際上沒有..try這個例子 插入這兩個記錄 { 'A1':[ 'A'], 'A2':[ 'A'] } { 'A1' :['A'] } query1(2 results) { 'a1':'A' } QUERY2(1個結果) { 'A1': 'A', 'A2':{$ NE: 'A'} } ..now更新第二記錄 { ' $ set':{ 「a2.0」:'A' } } ..並嘗試查詢2 ..同名結果!? 如果我更新2全套QUERY2工作..strange 發現顯示相同的數據 – xrado 2011-04-29 12:57:44

回答

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

相關問題