2017-04-20 1 views
2

Für keinen Grund gibt, die ich nicht verstehen kann ich nicht ein bestimmtes Feld in einem Dokument abfragenMongo finden Abfrage gibt immer leer Ergebnis für das Feld, die

Ich habe eine Sammlung orders genannt Wenn ich laufe:

db.orders.find({}).pretty(); 

bekomme ich das Ergebnis unter:

{ 
    "_id": "585bc54ee5652c1e4a59a4c5", 
    "item": "Milk", 
    "amount": "20.0", 
    "user": "585bc154e5652c1e4a59a4bb" 
}, 
{ 
    "_id": "585bc54ee5652c1e4a55532ba", 
    "item": "Vanilla", 
    "amount": "10.0", 
    "user": "585bc154e5652c1e4a59a4bb" 
}, 
{ 
    "_id": "585bc54ee5652cbab3837b333", 
    "item": "Chocolate", 
    "amount": "15.0", 
    "user": "585bc154e5652c1e4a59a4bb" 
} 

So, jetzt habe ich Problem Aufträge auswählen, die mit Benutzer-ID zu einem bestimmten Benutzer gehört 012.351.585bc154e5652c1e4a59a4bb Der Datensatz vorhanden ist, aber leer immer

db.orders.find({"user":"585bc154e5652c1e4a59a4bb"}); --> returns {} 

Die Abfrage über kehrt leer zurückgegeben. Bitte was könnte der Grund sein?

+0

verwenden Sie ein beliebiges Werkzeug? oder passiert es auf Mongo Shell? – AshokGK

+0

Haben Sie versucht, 'db.orders.find ({" user ": ObjectId (" 585bc154e5652c1e4a59a4bb ")});'? – chridam

+0

nein. Das habe ich noch nicht versucht. werde jetzt versuchen und – Digitlimit

Antwort

2

Versuchen Sie, die ID mit ObjectId Verpackung, da es eine String-Darstellung ist es:

db.orders.find({"user": ObjectId("585bc154e5652c1e4a59a4bb") 

Wenn Sie mit Node.j dann sollte die folgenden genügen:

var ObjectId = require('mongodb').ObjectId, 
    o_id = new ObjectId("585bc154e5652c1e4a59a4bb"), 
    collection = db.collection('orders'); 

collection.find({_id: o_id}).toArray((err, orders) => console.log(orders)); 

oder verwendet Aggregatmethode:

var ObjectId = require('mongodb').ObjectId, 
    o_id = new ObjectId("585bc154e5652c1e4a59a4bb"), 
    collection = db.collection('orders'); 

collection.aggregate([ { "$match": { "_id": o_id } } ], (err, result) => { 
    console.log(result); 
}). 
+1

Vielen Dank ein Haufen. Gute Antwort. – Digitlimit

+0

Ich bin erschwerend, wie unklar diese Dinge aus der Dokumentation sind (oder einfach nicht da). Vielen Dank! – Brett84c

0
db.orders.find({user : "585bc154e5652c1e4a59a4bb"}); 

Benutzer kann oder kann nicht in Anführungszeichen eingeschlossen werden. Für mich funktioniert es für beide Fälle.

+0

Dank @Nikita Mantri, aber ich habe bereits versucht und funktioniert nicht – Digitlimit

Verwandte Themen