我有一个地点和名称为集合的集合。
我使用下面的猫鼬创建了名称的索引,
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"})
答案 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
});