2014-11-28 3 views
2

데이터베이스에있는 _id: "AAE45/0RQfm/VUrywfb1Gw==" (예 : db.collection.find({_id: new BinData(3, "AAE45/0RQfm/VUrywfb1Gw==") }))의 레코드를 찾는 데 많은 문제가 있습니다.16 진수 _id없이 MongoDB 찾기 사용 방법

mongo 콘솔에서 BinData 변환기를 사용하면 문제가 없지만 BinData npm을 설치하고 "필수"인데도 javacript 파일 (저는 node.js를 사용하고 있습니다) 내부에서 작업하는 것을 거부합니다.

나는 또한 Binary() 함수를 시도했지만 16 진수 또는 12 바이트 이진수가 필요하다는 것을 계속해서 알려줍니다. .hex, .str.toString()도 작동하지 않습니다. 나는이 곳 발견

{"$binary": "AAE45/0RQfm/VUrywfb1Gw==", "$type": "03"} 

약속 같은데,하지만 난 그것을 구현하는 방법을 모른다.

나는 이것이 의미가 있기를 바랍니다. 누군가가 어떤 프로세스를 따라야하는지에 대한 통찰력이 있다면 (예 : 바이너리로 변환 한 후 헥스로 사용 ...) 환상적 일 것입니다.

답변

0

base64 문자열을 바이트 배열로 변환 한 다음 Binary을 사용하여 해당 mongodb 개체를 만들어야합니다. 그것은 이전 UUID 형식이기 때문에 당신은 당신이 정말로 하위 유형 3을 사용할 수 있도록 할 수 있습니다

var MongoClient = require('mongodb').MongoClient; 
var Binary = require('mongodb').Binary; 

MongoClient.connect("mongodb://localhost:27017/example", function (err, db) { 
    if (err) { return console.dir(err); } 
    var collection = db.collection('test'); 
    // decode the base64 string into a buffer 
    var buf = new Buffer("AAE45/0RQfm/VUrywfb1Gw==", 'base64'); 

    // create a mongo 'binary' object w/ subtype 3 
    var uuid = new Binary(buf, 3); 
    var doc1 = { 'hello': 'foo bar', '_id' : uuid }; 
    collection.insert(doc1, { w: 1 }, function (err, result) { }); 
}); 

: 여기 MongoDB의 컬렉션 지정된 ID를 가진 문서를 삽입 일부 작업 예제 코드입니다.