2017-02-27 3 views
-2

MongoDB 컬렉션에 액세스 할 수 있지만 그 _id 항목은 정확한 문자열 인 문자열입니다.ObjectId없이 MongoDB 컬렉션의 다음 항목 가져 오기

이전 _id를 기반으로하는 모음에서 다음 문서를 검색하려고합니다. 주위를 둘러 보았고 ObjectID를 사용하여 가능하다는 것을 알았습니다 : Finding The Next Document in MongoDb.

내 문제는 데이터베이스에 _id에 ObjectID가 없으므로 ObjectID (타임 스탬프) 대신 사용할 수있는 필드도 없다는 것입니다. 그러면 다음 문서를 어떻게 검색 할 수 있습니까? 나는이 경우, "example.com"_id와 하나의 다음 문서를 검색 어떻게 추가 수집 예를

{ "_id": random.com, 
    "name": "Random", 
}, 
{ "_id": example.com, 
    "name": "Example", 
}, 
{ "_id": stack.com, 
    "name": "Stack", 
} 

나는 _id "random.com을"있는 경우 :

편집? 나는 pymongo를 사용하고 있습니다.

+0

질문이 명확하지 않습니다. 그러나 다른 컬렉션에서 하나의 컬렉션의 필드를 찾으려면 컬렉션의 하위 문서를 직접 추가하거나 'DBRef'를 사용하여 다른 컬렉션의 참조를 제공하면됩니다. –

+0

@SachinBahal 나는 성취하려는 것을 보여 주었다. – Stanko

+0

필드 유형이 왜 문제가됩니까? ({_ id : { "$": "example.com"}}) sort ({_id : 1}). limit (1)'이것은 다음에 어떻게 얻을 것인가? _id 색인을 기반으로하는 문서 귀하의 경우 색인은 알파벳 순서이며 다음에 삽입하지 마십시오. – thanasisp

답변

1
cursor = db.coll.find({"_id": { "$gt": "the_url"}}).sort("_id").limit(1) 
for doc in cursor: 
    print(doc['_id']) 

sort을 참조하여 주문을 정의 할 수 있습니다. 색인은 알파벳순이며 _id의 다음 값을 얻습니다.

다음은 인 에 대해 묻습니다. 삽입 시간 순서는 sort("natural")입니다.

cursor = db.coll.find({"_id": { $gt":the_url"}}).sort("natural").limit(1) 
+0

나는 milion 레코드를 가지고 있으며 sort ("natural") 메소드는 오래 걸립니다. – Stanko

+0

이것이 URL을 _id로 저장하지 않아야하는 이유입니다. – thanasisp

+1

실제 값을 _id로 사용하는 것은 고유 한 값인 한 좋은 아이디어입니다. –