2017-02-18 2 views
1

Ich habe eine Sammlung mit Ort und Namen als Felder.Warum Mongo nicht alle Felder zurückgibt?

i erstellt Index für den Namen mit dem Mungo wie unten,

eventSchema.index({name: 'text'}); 

Wenn ich diese laufen auf robomongo, es gibt die alle 12 Felder,

db.getCollection('_event').find({"location.country":"United States"}) 

aber wenn ich laufe dies auf Robomongo, gibt es die Werte nur mit zwei Feldern, ID und Ort,

db.getCollection('_event').find({$text: {$search: "2017 Honda"}},{"location.country":"United States"}) 

Antwort

3

Es ist weil Sie anderen Abfrageausdruck verlegt haben, können Sie es als eine Projektion angegeben werden daher Sie die Projektion mit zwei Feldern bekommen:

db.getCollection('_event').find(
    {$text: {$search: "2017 Honda"}}, // <-- query part 
    {"location.country":"United States"} // <-- projection part 
) 

Sie müssen es in die das Abfrage-Objekt bewegen, wie:

db.getCollection("_event").find(
    { 
     "$text": { "$search": "2017 Honda" }, 
     "location.country": "United States" 
    } 
) 

das ist ein impliziter $and Ausdruck und auch explizit als

db.getCollection("_event").find(
    { 
     "$and": [ 
      { "$text": { "$search": "2017 Honda" } }, 
      { "location.country": "United States" } 
     ] 
    }   
) 
angegeben werden können
-1
db.getCollection('_event').find({ 
    $text: {$search: "2017 Honda"}, 
    "location.country":"United States" 
}, 
{ 
    "location":1, 
    "_id":0 // -- here we specify required fields. 1 is showing, 0 is not showing 
}); 
012.
Verwandte Themen