저는 mongodb을 처음 사용합니다. 최근에 기본 구문을 배우기 시작했습니다. find 메서드를 사용하여 연산자를 사용하려고했는데 암시 적 AND를 시도하는 동안 혼란스러운 경우가 발생했습니다.몽고 DB에서 메서드의 혼동을 암시 적으로 발견했습니다.
내 컬렉션 mathtable
다음과 같이가 400 문서를 갖는
mathtable
컬렉션의 400 개 행이 { "_id" : ObjectId("540efc2bd8af78d9b0f5d4b2") , "index" : 1 }
{ "_id" : ObjectId("540efc2bd8af78d9b0f5d4b3") , "index" : 2 }
{ "_id" : ObjectId("540efc2bd8af78d9b0f5d4b4") , "index" : 3 }
{ "_id" : ObjectId("540efc2bd8af78d9b0f5d4b5") , "index" : 4 }
{ "_id" : ObjectId("540efc2bd8af78d9b0f5d4b6") , "index" : 5 }
{ "_id" : ObjectId("540efc2bd8af78d9b0f5d4b7") , "index" : 6 }
{ "_id" : ObjectId("540efc2bd8af78d9b0f5d4b8") , "index" : 7 }
{ "_id" : ObjectId("540efc2bd8af78d9b0f5d4b9") , "index" : 8 }
{ "_id" : ObjectId("540efc2bd8af78d9b0f5d4ba") , "index" : 9 }
{ "_id" : ObjectId("540efc2bd8af78d9b0f5d4bb") , "index" : 10 }
{ "_id" : ObjectId("540efc2bd8af78d9b0f5d4bc") , "index" : 11 }
{ "_id" : ObjectId("540efc2bd8af78d9b0f5d4bd") , "index" : 12 }
{ "_id" : ObjectId("540efc2bd8af78d9b0f5d4be") , "index" : 13 }
{ "_id" : ObjectId("540efc2bd8af78d9b0f5d4bf") , "index" : 14 }
{ "_id" : ObjectId("540efc2bd8af78d9b0f5d4c0") , "index" : 15 }
{ "_id" : ObjectId("540efc2bd8af78d9b0f5d4c1") , "index" : 16 }
{ "_id" : ObjectId("540efc2bd8af78d9b0f5d4c2") , "index" : 17 }
{ "_id" : ObjectId("540efc2bd8af78d9b0f5d4c3") , "index" : 18 }
{ "_id" : ObjectId("540efc2bd8af78d9b0f5d4c4") , "index" : 19 }
{ "_id" : ObjectId("540efc2bd8af78d9b0f5d4c5") , "index" : 20 }
{ "_id" : ObjectId("540efc2bd8af78d9b0f5d4d1") , "index" : 1 }
..
..
{ "_id" : ObjectId("540efc2bd8af78d9b0f5d4z5") , "index" : 20 }
: 1 to 20
에서 index
범위의
- 값입니다.
index
의 각 값에 대해 서로 다른 _id 값을 갖는20
항목이 있습니다.
나는 둘 다 implicit AND
경우를 고려하여 두 가지 작업을 시도하고 동일한 결과가 예상됩니다. 값 (160 개 레코드에 대한 검색 결과)보다 큰 제
고전 EXPLICIT AND 사용 데에도
index
값 계산: 번만 변수 명을 사용
db.mathtable.count({ $and: [ { index: { $mod: [2,0] } }, { index: { $gt: 5 } } ] });
을 (결과 (160)에 기록) :
db.mathtable.count({ index : { $mod : [2,0] , $gt:5 } });
,515,모든 조건의 필드 이름을 사용하여 (300 개 레코드에 결과) 각 조건의 필드 명을 사용
db.mathtable.find({ index : { $mod : [2,0]} , index : {$gt:5} });
반대 순서 상태 (200 개 레코드에 대한 검색 결과) :
db.mathtable.find({ index : {$gt:5} , index : { $mod : [2,0]} });
는 MongoDB의 설명서 implicit OR
에 대한 언급이 없다 (또는-적어도 나는 implicit AND
같은 직접 참조를 찾을 수 없습니다).
160
)의 동일한 수를 기다리고 있었다. 위 코드가 왜 다르게 작동하는지 이해할 수 없습니다.
또한 조건 지정의 결과로 상이한 수 결과 순서. 관측에 따라 동일한 필드가 여러 번 지정된 경우 find에 지정된 마지막 조건 만 적용되었습니다. 이상하고 잘못되었습니다.
참고 : 나는 Mongo-DB-2.6
을 사용하고 코드가 배포되어 mongo shell
에서 실행되고있다.
db.mathtable.find({
index : { $mod : [2,0]} ,
index : {$gt:5}
});
상기 간주된다 당량 :
이유를 이해하는 데 많은 도움이됩니다. –