복붙노트

[MONGODB] 어떻게 몽고의 "NOT IN"쿼리를해야합니까?

MONGODB

어떻게 몽고의 "NOT IN"쿼리를해야합니까?

이것은 내 문서입니다 :

{ 
    title:"Happy thanksgiving",
    body: "come over for dinner",
    blocked:[
       {user:333, name:'john'},
       {user:994, name:'jessica'},
       {user:11, name: 'matt'},
    ]
}

"차단"의 사용자 (11)이없는 모든 문서를 찾을 수있는 쿼리는 무엇입니까?

해결법

  1. ==============================

    1.당신은 "하지"에 $ 나에 대한 $ 닌을 사용할 수 있습니다

    당신은 "하지"에 $ 나에 대한 $ 닌을 사용할 수 있습니다

    예 ...

    > db.people.find({ crowd : { $nin: ["cool"] }});
    

    내가 여기 무리 더 많은 예제를 넣어 : http://learnmongo.com/posts/being-part-of-the-in-crowd/

  2. ==============================

    2.단일 값과 비교하고 있기 때문에, 당신의 예를 실제로 조작으로 NOT 필요하지 않습니다. 몽고는 배열의 하위 문서의 모든 요소에 자사의 검색 기준을 적용하기 때문입니다. 당신은 NOT이 검색에서 켤 수 없습니다 값을 가져 당신이 원하는 것을 얻기 위해 운영자, $ 네브라스카, EQUALS 사용할 수 있습니다 :

    단일 값과 비교하고 있기 때문에, 당신의 예를 실제로 조작으로 NOT 필요하지 않습니다. 몽고는 배열의 하위 문서의 모든 요소에 자사의 검색 기준을 적용하기 때문입니다. 당신은 NOT이 검색에서 켤 수 없습니다 값을 가져 당신이 원하는 것을 얻기 위해 운영자, $ 네브라스카, EQUALS 사용할 수 있습니다 :

    db.myCollection.find({'blocked.user': {$ne: 11}});
    

    당신이 동일 할 수없는 많은 것들을있는 경우는 $ 닌이다 운영자에하지를 사용합니다 때, 즉. 그것은 검색에서 켤 수 없습니다 값의 배열을 취합니다

    db.myCollection.find({'blocked.user': {$nin: [11, 12, 13]}});
    
  3. ==============================

    3.다음을 시도해보십시오

    다음을 시도해보십시오

    db.stack.find({"blocked.user":{$nin:[11]}})
    

    이것은 나를 위해 일했다.

  4. ==============================

    4.http://docs.mongodb.org/manual/reference/operator/query/nin/#op._S_nin 참조

    http://docs.mongodb.org/manual/reference/operator/query/nin/#op._S_nin 참조

    db.inventory.find( { qty: { $nin: [ 5, 15 ] } } )
    
  5. from https://stackoverflow.com/questions/6391643/how-do-i-do-a-not-in-query-in-mongo by cc-by-sa and MIT license