it-swarm.com.de

Wie suche ich nach einem Objekt anhand seiner ObjectId in der Konsole?

Ich habe diese Frage für C # und Perl beantwortet, aber nicht für die native Oberfläche. Ich dachte das würde funktionieren:

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

Die Abfrage ergab keine Ergebnisse. Ich habe die 4ecbe7f9e8c1c9092c000027 gefunden, indem ich db.theColl.find() ausgeführt und eine ObjectId abgerufen habe. In dieser Sammlung befinden sich mehrere tausend Objekte.

Ich habe alle Seiten gelesen, die ich auf der mongodb.org-Website finden konnte, und habe sie nicht gefunden. Ist das nur eine seltsame Sache? Es scheint mir ziemlich normal zu sein.

221
jcollum

Gar nicht merkwürdig, das machen die Leute die ganze Zeit. Stellen Sie sicher, dass der Name der Auflistung korrekt ist (Groß- und Kleinschreibung) und dass die ObjectId genau ist.

Die Dokumentation ist hier

> 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 }
352
Tyler Brock

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 neuer ObjectId (id), nicht neuer ObjectID (id)

75
Mustafa Deniz

Noch einfacher, vor allem mit Tab Vervollständigung:

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

Bearbeiten: Funktioniert auch mit dem Befehl findOne für eine schönere Ausgabe.

74
MPlanchard

Sie haben das Einfügen von Anführungszeichen verpasst. Die genaue Abfrage lautet

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

Ich hatte gerade dieses Problem und tat genau das, was dokumentiert wurde und es funktionierte immer noch nicht.

Sehen Sie sich Ihre Fehlermeldung an und stellen Sie sicher, dass keine Sonderzeichen kopiert wurden. Ich habe den Fehler erhalten

SyntaxError: illegal character @(Shell):1:43

Als ich zu Zeichen 43 ging, war es nur der Anfang meiner Objekt-ID, nach den offenen Anführungszeichen, genau wie ich sie eingefügt habe. Ich habe meinen Cursor dort platziert und die Rücktaste gedrückt. Es schien nichts zu passieren, als hätte das offene Anführungszeichen entfernt werden sollen. Ich drückte erneut die Rücktaste und entfernte das offene Zitat, dann setzte ich das Zitat wieder ein und führte die Abfrage aus und es funktionierte, obwohl es genauso aussah.

Ich habe in WebMatrix entwickelt und die Objekt-ID von der Konsole kopiert. Wenn Sie in WebMatrix von der Konsole kopieren, werden Sie wahrscheinlich einige unsichtbare Zeichen finden, die Fehler verursachen.

3
Patrick Graham

Sobald Sie die Mongo-CLI geöffnet haben, sind Sie mit der richtigen Datenbank verbunden und autorisiert.

Das folgende Beispiel zeigt, wie das Dokument finden mit der _id = 568c28fffc4be30d44d0398e aus einer Sammlung namens "products":

db.products.find({"_id": ObjectId("568c28fffc4be30d44d0398e")})
3
Oliver Wolf

In MongoDB Stitch-Funktionen kann dies mit BSON wie folgt durchgeführt werden:

Verwenden Sie dazu den Helfer ObjectId im BSON-Dienstprogrammpaket wie im folgenden Beispiel:

var id = "5bb9e9f84186b222c8901149";  
BSON.ObjectId(id);
1
kushal.8

Ich denke, du schreibst besser so etwas:

db.getCollection('Blog').find({"_id":ObjectId("58f6724e97990e9de4f17c23")})
1
mina_anwer