使用MongoDB中的动态字段名称进行搜索

我有一种情况,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.

点赞