我正在尝试学习如何以更高级的方式查询Mongo.假设我的数据结构如下:
{ "_id" : "-bcktick-ajman-ae-292932", "asciiname" : "`Ajman",
"alternatenames" : [
{
"isolanguage" : "no",
"alternateNameId" : 2698358,
"alternateName" : "Ajman"
},
{
"isolanguage" : "en",
"alternateNameId" : 2698357,
"alternateName" : "Ajman"
}
]
}
Run Code Online (Sandbox Code Playgroud)
所以要找到Ajman很容易:
db.cities.find({ "asciiname":"`Ajman" })
Run Code Online (Sandbox Code Playgroud)
不过,我想找到的城市,只有拥有isolanguage的连接.你会注意到isolanguage在alternatenames数组中.
但我似乎无法在客户端或mongoid中找到正确的语法
任何一方(或两方)都会受到高度赞赏.
谢谢
我想你正在寻找$elemMatch关键字:
db.cities.find(
{ 'alternatenames' : {
$elemMatch: { isolanguage: 'en'}
}
})
Run Code Online (Sandbox Code Playgroud)
目前,Mongoid没有帮助器,$elemMatch所以你必须传入原始查询:
City.where({ :alternatenames => { '$elemMatch' => { :isolanguage => 'en' } } })
Run Code Online (Sandbox Code Playgroud)
更多信息在$elemMatch这里:
有关Mongoid支持的更多信息$elemMatch:
| 归档时间: |
|
| 查看次数: |
2174 次 |
| 最近记录: |