我有一种情况,Mongo DB中的记录如下:
{
"_id" : "xxxx",
"_class" : "xxxx",
"orgId" : xxx,
"targetKeyToOrgIdMap" : {
"46784_56139542ecaa34c13ba9e314" : 46784,
"47530_562f1bc5fc1c1831d38d1900" : 47530,
"700004280_56c18369fc1cde1e2a017afc" : 700004280
},
}
我必须找出targetKeyToOrgIdMap的子节点具有一组特定值的记录.这意味着,我知道在“46784_56139542ecaa34c13ba9e314”:46784部分的记录中将会有什么价值.并且字段名称是可变的,它的值与一些随机字符串的组合.
在上面的例子中,我有46784,我需要找到在相应字段中有46784的所有记录.
有没有什么方法可以解雇一些正则表达式或类似的东西,或者使用任何其他方法,我将获得具有我需要的值的字段targetKeyToOrgIdMap的子节点中的记录.
提前致谢
最佳答案 您可以像这样使用MongoDB的$:
db.myCollection.find( { $where: function() {
for (var key in obj.targetKeyToOrgIdMap) {
if (obj.targetKeyToOrgIdMap[key] == 46784){
return true;
}
}
}}).each { obj ->
println obj
}
但请注意,这将需要全表扫描,其中为每个文档执行功能.见documentation.