2016-06-17 9 views
2

Ich habe so schwer versucht, meine Datensätze von ID von MongoDB ohne Erfolg zu filtern. Das Problem ist mit $ oidMongoDB von MLab: Suche nach ID funktioniert nicht

Auf MLAB meine Aufzeichnungen wie folgt aussehen:

{ 
    "_id": { 
     "$oid": "57603891dcba0f7813102b3f" 
    }, 
    "age": 10, 
    "name": "john", 
    "answer": "3", 
} 

Mein Skript als:

 mycollection.find({_id:"57603891dcba0f7813102b3f"},{},{},function(err, docs) { 
    console.log("record"+docs); 
    docs.each(function(err, doc) { 
     if(doc) { 
     console.log("record"+doc); 
     } 
    }); 
    }); 

Was es falsch ist? irgendwelche Idee Jungs?

Antwort

0

Versuchen Sie Folgendes: -

mycollection.find({"_id.$oid":"57603891dcba0f7813102b3f"},{},{},function(err, docs) { 
console.log("record"+docs); 
docs.each(function(err, doc) { 
    if(doc) { 
    console.log("record"+doc); 
    } 
}); 
    }); 
+0

Funktioniert immer noch nicht mit MLab Verbindung –

6

Das Problem mit dem Skript ist, dass Sie

{ 
     "$oid": "57603891dcba0f7813102b3f" 
}, 

eine normale Zeichenfolge "57603891dcba0f7813102b3f" mit einem ObjectId Zeichenfolge zu vergleichen versuchen Wenn Sie node.js verwenden , hier ist, was Sie tun können

1) Import ObjectId api von mongodb Paket

var ObjectId = require('mongodb').ObjectID; 

2) konvertieren normale Zeichenfolge ObjectId in Ihrer Anfrage

mycollection.find({_id:ObjectId("57603891dcba0f7813102b3f")},{},{},function(err, docs) {...} 

Btw, Die Antwort von @ geschrieben titi23 auch funktioniert. Aber ich finde die ObjectId-Konvertierung sauberer.

+0

dies funktioniert mit meiner lokalen MongoDb Installation, aber nicht mit der MLab Verbindung. Ich habe immer noch eine Null als Rückgabewert ... –

+0

Können Sie die Beispieldaten von Ihrer mLab-Instanz teilen? –

+0

Ein Beispieldokument ist das, was ich habe auf der Frage gezeigt: { "_id": { "$ oid": "57603891dcba0f7813102b3f" }, "Alter": 10, "name": "John", " antwort ":" 3 ", }. Jedes neue in mlab eingefügte Dokument wird mit $ oid formatiert. –

1

Sie können auf diese Weise auf mLab suchen.

{ 
    "_id": { 
     "$oid": "59b59b34852a9619b486634f" 
    } 
} 

Aber Ihr JavaScript-Code sollte sein

uId = ObjectId("59b59b34852a9619b486634f") 
User.findOne({"_id": uId}, function(err, user){ 
}); 
0

auf Ihrem lokalen Entwicklung MongoDB-Server, der "_id" indiziert ist und identifiziert mit ObjectID ("...."). Wenn zum Beispiel lokal Abfragen Sie

{ "_id": ObjectID("....") , "name": ".......", "password" : "............"} 

erhalten kann, während in Mlab oder einem beliebigen Remote-mongodb Server abfragt, die "_id" als "$ oid" verwiesen. Zum Beispiel

{ "_id": { "$oid": "..........."} , "name": "......."} 

Wenn Sie wie ich sind, können Sie versuchen, das Dokument des „_id“ in MLab und ersetzen die frühere Beschreibung mit letzterem zu bearbeiten, Mlab werden Sie nicht zulassen, dass so tun, ich denke, das ist Teil seiner Beschränkungen. Probieren Sie es aus und sehen Sie nach, ob Sie Workarounds zum Teilen haben.

Verwandte Themen