2016-04-30 7 views
1

In meiner Sammlung hat ich Dokumente wie:Mungo einfache Finde Abfrage Fehler führen zu holen

{ 
    "_id": ObjectID("5725290dacb36ae775e25dbe"), 
    "prop": { 
     "giver_name": "Random Tester", 
     "giver_id": ObjectID("56b5e87e1827640215c5c055"), 
     "giver_url": "random-tester" 
    }, 
    "owner": ObjectID("568fbeef9823be8e105afa46"), 
    "title": "testing", 
    "content": "hgj jhj hgjh gjhgjhgj hgjhg jhg", 
    "type": "recommendation", 
    "modified": ISODate("2016-04-30T21:52:13.517Z"), 
    "created": ISODate("2016-04-30T21:52:13.518Z"), 
    "privacy": { 
     "all": true 
    }, 
    "shares": [], 
    "interests": [], 
    "comments": 0, 
    "acknowledgements": [], 
    "__v": 0 
} 

Ich versuche, das oben Dokument mit einer Mungo Abfrage

Post.findAsync({type:'recommendation','prop.giver_id':"56b5e87e1827640215c5c055" }).then(function(count, err){ 
    console.log('Recommendation count: ',count," : ",userId," : ",err); 
    return res.status(200).json(count); 
    }); 

Die obige Abfrage gibt mir zu holen eine leere Ergebnismenge, aber wenn ich den prop.giver_id Teil entferne, bekomme ich alle Ergebnisse. Ich weiß, dass das Feld ein ObjectId ist, aber soweit ich gesehen habe, funktioniert eine Zeichenfolge in der Suchabfrage ziemlich gut. Was mache ich falsch?

+0

@JohnnyHK Dank, habe ich vergessen, das Feld als objectId im Modell zu definieren. Bitte posten Sie es als Antwort, damit ich es akzeptieren kann :) – SuSub

Antwort

1

Mongoose wird die Felder in Ihrer Abfrage basierend auf Ihrer Schemadefinition umwandeln. Wenn eine solche Abfrage nicht funktioniert, liegt das oft daran, dass die Schemadefinition nicht mit Ihrem tatsächlichen Dokument übereinstimmt.

In diesem Fall gewährleisten giver_id im Schema wie folgt definiert ist:

giver_id: mongoose.Schema.ObjectId