programing

mongoDB 쿼리 "WHERE _id > 임계값"

stoneblock 2023. 7. 13. 20:20

mongoDB 쿼리 "WHERE _id > 임계값"

SQL "...와 유사한 mongo 쿼리를 사용하려면 어떻게 해야 합니까?WHERE _id > 임계값"

다음을 시도해 보았지만 결과가 나오지 않습니다.

 db.things.find(_id: {$gt: someid} });

_id 필드가 형식을 가지고 있다는 점에서 조금 특별하기 때문입니까?

_id : {"$oid" : "someid"} 

like를 like와 비교

_idmongo의 키는 (기본적으로) 문자열이 아닙니다. mongoobjectId입니다.

의미 있는 결과를 얻으려면 동일한 유형과 비교해야 합니다.

var ObjectId = require('mongodb').ObjectID;
var oid = new ObjectId();
db.things.find(_id: {$gt: oid});

mongoexport 파일을 읽지 않음

Mongo 내보내기 파일은 다음과 같습니다.

{ "_id" : { "$oid" : "4f876b00c56da1fa6a000030" }, ...

개체 ID의 json 표현입니다.Mongo는 당신이 실제로 db를 조회할 때 그런 구문을 사용하는 것을 원하지 않습니다.이것은 작동하지 않습니다.

# will not work
db.things.find("_id.$oid": {$gt: "string"});

문자열로서의 id

ID를 문자열로 지정하면 다음 작업을 수행할 수 있습니다.

var ObjectId = require('mongodb').ObjectID;
var str = "123456789012345678901234";
var oid = new ObjectId(str);
db.things.find(_id: {$gt: oid});

부분 문자열로서의 id

만약 당신이 가지고 있는 문자열이 유효한 oid(24자가 아님)가 아니라면, 당신은 단지 mongo로부터 예외를 얻게 될 것입니다 - 또는 당신의 드라이버에 따라, 새로운 oid.부분 객체 ID가 있는 경우 0으로 패딩하여 유효한 oid를 만들 수 있으므로 부분 객체 ID를 통해 검색할 수 있습니다. 예:

var ObjectId = require('mongodb').ObjectID;
var oid = new ObjectId(str + "0000");
db.things.find(_id: {$gt: oid});

언급URL : https://stackoverflow.com/questions/11052286/mongodb-query-where-id-threshold