我有一个包含以下对象的Mongo DB:
"clients" : {
"x" : {
"clientId" : "x1",
"mainInfo" : {
...
},
"events" :
{
"58a176bbc3588410cd5450c6" : {
"clientType" : "5001",
"location" : "60001"
}
"58a176bbc3588410cd5450c8" : {
"clientType" : "5001",
"location" : "60002"
}
....}
我似乎无法弄清楚如何查询'clients.x.events。(变量ID).clientType'= 50001.哪里有一种方法可以在事件嵌入对象内部向下钻取以获得与“clientType”匹配的所有记录:“5001”?
谢谢
答案 0 :(得分:0)
您需要创建如下所示的键值对象。
var variable_id = <your variable id>;
db.collection.find({ [ 'clients.x.events.'+variable_id+'.clientType' ]:5001 });
详细了解此here
答案 1 :(得分:0)
也许你可以使用$where运算符。它对我有用。
使用$ where运算符传递包含a的字符串 JavaScript表达式或查询的完整JavaScript函数 系统
db.collection.find({"$where" : function(){
for( var c in this ){
if( c == "x" ){
for(var i in this[c]){
for(var j in this[c][i]){
if(j == 'clientType' && this[c][i][j] == '5001'){
return true;
}
}
}
};
}
return false;
}});
希望这有帮助。