为什么mongo不会返回所有字段?

时间:2017-02-18 10:20:27

标签: node.js mongodb robo3t

我有一个地点和名称为集合的集合。

我使用下面的猫鼬创建了名称的索引,

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

当我在robomongo上运行它时,它会返回所有12个字段,

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

但是当我在robomongo上运行它时,它只返回两个字段的值,id和location,

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

2 个答案:

答案 0 :(得分:3)

这是因为您错放了其他查询表达式,您将其指定为投影,因此您获得了两个字段的投影:

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

您需要将其移动到查询对象中:

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

这是一个隐含的 $and 表达式,也可以明确指定为

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

答案 1 :(得分: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
});