2011-04-28 137 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