MongoDB가 같지 않음


102

텍스트 필드가 ''(공백)이 아닌 MongoDB에 쿼리를 표시하려고합니다.

{ 'name' : { $not : '' }}

그러나 나는 오류가 invalid use of $not

나는 문서를 살펴 보았지만 그들이 사용하는 예제는 복잡한 경우에 대한 것입니다 (정규 표현식과 $not다른 연산자 부정).

내가하려는 간단한 일을 어떻게할까요?

답변:


147

사용 $ne- $not뒤에 표준 연산자가 와야합니다.

$ne같지 않음을 나타내는에 대한 예 :

use test
switched to db test
db.test.insert({author : 'me', post: ""})
db.test.insert({author : 'you', post: "how to query"})
db.test.find({'post': {$ne : ""}})
{ "_id" : ObjectId("4f68b1a7768972d396fe2268"), "author" : "you", "post" : "how to query" }

이제 $not술어 ( $ne)를 받아 부정 ( $not)합니다.

db.test.find({'post': {$not: {$ne : ""}}})
{ "_id" : ObjectId("4f68b19c768972d396fe2267"), "author" : "me", "post" : "" }

4
호기심 많은 사람들 $ne은 "같지 않음"을 말합니다.
abraham

1
이 답변에는 많은 표가 있지만 설명은 매우 불분명합니다. $ not과 $ ne이 모두있는 예제에서 무슨 일이 일어나고 있습니까?
GaTechThomas

그래서 간단히 $not :{ $ne말해서 $eq, 이것이 당신이 말하려는 것입니까?
Anu



10

로부터 몽고 워드 프로세서 :

$not연산자는 다른 연산자에 영향을 미치는 독립적으로 필드 및 문서를 확인할 수 없습니다. 따라서 $not논리적 분리 에는 연산자를 사용하고 $ne필드의 내용을 직접 테스트하려면 연산자를 사용하십시오.

현장을 직접 테스트하고 $ne있으므로 여기서 사용하기에 적합한 연산자입니다.

편집하다:

사용하려는 상황은 다음과 같습니다 $not.

db.inventory.find( { price: { $not: { $gt: 1.99 } } } )

다음과 같은 모든 문서가 선택됩니다.

  • 가격 필드 값이 1.99 또는 가격보다 작거나 같습니다.
  • 필드가 없습니다.

3

null배열에있는 경우 이를 피하려면 :

db.test.find({"contain" : {$ne :[] }}).pretty()

1

실제 사례; 현재 사용자가 아닌 모든 사용자 찾기 :

var players = Players.find({ my_x: player.my_x,  my_y: player.my_y, userId: {$ne: Meteor.userId()} }); 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.