407 Stimmen

Wie kann ich in der Mongo-Konsole nach einem Objekt anhand seiner ObjectId suchen?

Ich habe eine Antwort auf diese Frage für C# und Perl gefunden, aber nicht in der nativen Schnittstelle. Ich dachte, dies würde funktionieren:

db.theColl.find( { _id: ObjectId("4ecbe7f9e8c1c9092c000027") } )

Die Abfrage ergab keine Ergebnisse. Ich habe die 4ecbe7f9e8c1c9092c000027 gefunden, indem ich db.theColl.find() und Erfassen einer ObjectId. Diese Sammlung enthält mehrere tausend Objekte.

Ich habe alle Seiten gelesen, die ich auf der Website mongodb.org finden konnte, aber ich habe nichts gefunden. Ist das einfach eine seltsame Sache? Für mich scheint es ziemlich normal zu sein.

615voto

Tyler Brock Punkte 28598

Das ist überhaupt nicht seltsam, die Leute machen das ständig. Stellen Sie sicher, dass der Name der Sammlung korrekt ist (Groß- und Kleinschreibung spielt eine Rolle) und dass die ObjectId exakt ist.

Die Dokumentation ist aquí

> db.test.insert({x: 1})

> db.test.find()                                               // no criteria
{ "_id" : ObjectId("4ecc05e55dd98a436ddcc47c"), "x" : 1 }      

> db.test.find({"_id" : ObjectId("4ecc05e55dd98a436ddcc47c")}) // explicit
{ "_id" : ObjectId("4ecc05e55dd98a436ddcc47c"), "x" : 1 }

> db.test.find(ObjectId("4ecc05e55dd98a436ddcc47c"))           // shortcut
{ "_id" : ObjectId("4ecc05e55dd98a436ddcc47c"), "x" : 1 }

154voto

Mustafa Deniz Punkte 1489

Wenn Sie Node.js verwenden:

var ObjectId = require('mongodb').ObjectId; 
var id = req.params.gonderi_id;       
var o_id = new ObjectId(id);
db.test.find({_id:o_id})

Bearbeiten: korrigiert zu new ObjectId(id), nicht new ObjectID(id)

108voto

MPlanchard Punkte 1711

Noch einfacher, vor allem mit der Tabulatorvervollständigung:

db.test.find(ObjectId('4ecc05e55dd98a436ddcc47c'))

Edit: funktioniert auch mit dem findOne Befehl für eine schönere Ausgabe.

24voto

Sie haben es versäumt, doppelte Anführungszeichen einzufügen. Die genaue Abfrage lautet

db.theColl.find( { "_id": ObjectId("4ecbe7f9e8c1c9092c000027") } )

21voto

Saurabh Punkte 304

Wenn Sie an der Mongo-Shell arbeiten, lesen Sie bitte diese : Antwort von Tyler Brock

Ich schrieb die Antwort, wenn Sie mongodb mit node.js verwenden

Sie müssen die id nicht in eine ObjectId . Verwenden Sie einfach :

db.collection.findById('4ecbe7f9e8c1c9092c000027');

Diese Sammelmethode wandelt id automatisch in ObjectId um.

Andererseits :

db.collection.findOne({"_id":'4ecbe7f9e8c1c9092c000027'}) funktioniert nicht wie erwartet. Sie haben id manuell in ObjectId .

Das kann folgendermaßen geschehen:

let id = '58c85d1b7932a14c7a0a320d';

let o_id = new ObjectId(id);   // id as a string is passed

db.collection.findOne({"_id":o_id});

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X