윈도우 7 64 SP1 - MongoDB를 2.2.0-RC2 - 다음 C++ 드라이버쿼리 쉘과 다른
- MS VS 2010 궁극 - 1.42 부스트 셸에서 "액션 몽고", :
for(i=0; i<200000; i++){
db.numbers.save({num: i});
}
db.numbers.find() 표시 :
{ "_id": ObjectId("4bfbf132dba1aa7c30ac830a"),"num" : 0 }
{ "_id": ObjectId("4bfbf132dba1aa7c30ac830b"),"num" : 1 }
{ "_id": ObjectId("4bfbf132dba1aa7c30ac830c"),"num" : 2 }
{ "_id": ObjectId("4bfbf132dba1aa7c30ac830d"),"num" : 3 }
...
그래서, 담당자 C++에서 licating :
// Insert 200,000 documents
for (int i = 0; i < 200000 ; i++)
c.insert(dc,BSON(GENOID << "num" << i));
//Display the first 20 documents
Query qu = BSONObj();
auto_ptr<DBClientCursor> cursor = c.query(dc,qu);
for (int i = 0 ; i < 20 ; i++){
cout << cursor->next().toString() << endl;
}
출력 :
{ "_id" : ObjectId("504bab737ed339cef0e26829"), "num" : 199924 }
{ "_id" : ObjectId("504bab737ed339cef0e2682a"), "num" : 199925 }
{ "_id" : ObjectId("504bab737ed339cef0e2682b"), "num" : 199926 }
{ "_id" : ObjectId("504bab737ed339cef0e2682c"), "num" : 199927 }
....
셸() db.numbers.find 호출하는 것은 동일한 출력을 갖는다. { "num": 0}으로 시작하는 이유는 무엇입니까? 그것은 존재합니다
는> db.numbers.find({"num" : 0})
{ "_id" : ObjectId("504bab417ed339cef0df5b35"), "num" : 0 }
는 대한 _id 존재 "_id"에
그리고 인덱스 { "NUM은": 0}됩니다에 대한 _id {199924 "NUM"} : 이전
> db.numbers.getIndexes()
[
{
"v" : 1,
"key" : {
"_id" : 1
},
"ns" : "learning.numbers",
"name" : "_id_"
}
]
내가 읽어 쿼리 코드를 변경하여 _id에 의해 일종의 추가하면
:
auto_ptr<DBClientCursor> cursor = c.query(dc,qu.sort("_id"));
는 다음 순서대로 인쇄 :
{ "_id": ObjectId("4bfbf132dba1aa7c30ac830a"),"num" : 0 }
{ "_id": ObjectId("4bfbf132dba1aa7c30ac830b"),"num" : 1 }
...
이 문서의 (200 말) 작은 컬렉션 발생하지 않습니다.
질문 : 왜이 C++ 쿼리 _id에 컬렉션의 인덱스를 사용하지 않는 것으로 나타 납니까?