2014-03-25 6 views
2

을 포함하지 않는 :MongoDB를 - 배열 요소를 포함하고 내가 다음과 같습니다 내 MongoDB를 수집 중 하나를 조회하기 위해 노력하고있어 다른

> db.collection.find() 
{name: "foo", things: [{stuff:"banana", value: 1}, {stuff:"apple", value: 2}, {stuff:"strawberry", value: 3}]} 
{name: "bar", things: [{stuff:"banana", value: 4}, {stuff:"pear", value: 5}]} 
... 

내 목표는 포함 things 필드에있는 모든 개체를 나열하는 것입니다 stuff=banana 인 요소하지만 stuff=apple

나는이 같은 시도 :

db.transactions.find({ 
    "things": { 
    $elemMatch: { 
     "stuff": "banana", 
     $ne: { 
     "stuff": "apple" 
     } 
    } 
    } 
) 

을하지만 그것은 작동하지 않습니다. 어떤 아이디어?

답변

1

사용에게 $not$and 운영자 :

db.collection.find({ 

    $and:[ 
    {"things": {$elemMatch: { "stuff": "banana" }}}, 
    {"things": {$not: {$elemMatch: { "stuff": "apple"}}}} 
    ] 

}); 
5

은 아래의 쿼리 stuff=banana 인 요소를 포함하는 things 필드가 모든 문서의 목록을 얻을 것이다하지만 stuff=apple :

db.test.find({"$and":[{"things.stuff":"banana"}, {"things.stuff":{$ne:"apple"}}]}) 
2

사용 $ in 및 $ nin 포함 및 제외

db.transactions.find({ 
    "things.stuff": { 
    $in: ["banana"], 
    $nin:["apple"] 
    } 
})