我正在尝试使用$elemMatch
来查找数组中的对象。我将以下数据导入名为trails
的集合:
{ "Copper" : [
{"name" : "Spaulding Bowl", "level" : "Extreme Terain", "location" : "East Side"},
{"name" : "Resolution Bowl", "level" : "Double Black", "location" : "East Side"},
{"name" : "Black Bear Glade", "level" : "Double Black", "location" : "East Side"},
{"name" : "Free Fall Glade", "level" : "Double Black", "location" : "East Side"}
]
}
我正在使用MongoDB documentation中的语法进行以下查询:
db.trails.find( { "Copper": { $elemMatch: { "name" : "Spaulding Bowl" } } } )
我也试过在键盘周围没有引号的情况下形成它:
db.trails.find( { Copper: { $elemMatch: { name : "Spaulding Bowl" } } } )
不是只返回一个匹配元素,而是返回整个对象数组。我缺少语法错误吗?所有提示都表示赞赏。
答案 0 :(得分:1)
$elemmatch(query) 会返回数组中的所有行。
$elemMatch(projection) 在用作投影时仅返回所有匹配行的第一行。
您的案件不需要elemMatch,因为它只是单一标准。
unique:table_name,column_name,except,idColumn
尝试如下使用elemMatch投影变体。
db.trails.find({"Copper.name": { "Spaulding Bowl" } })