mongodb搜索字段名称是否包含('某事')

时间:2016-03-10 16:20:13

标签: mongodb where-clause

由于Mongo是无模式的,因此可以知道文档可以有不同的密钥。

我处于一种情况,我需要搜索字段名称[即密钥名称]而不是其值。

我在很多地方看过它并发现可以使用$where 我意识到效率不高;但那没关系!因为它将在生产前进行一次调查。

所以我尝试构建查询,但是我无法生成预期结果,因为我知道密钥在数据库中可用。

我的JS代码:

function kName(){
   for (var k in obj){
       if (k.startsWith('gold')){
           return obj
         }
   }
}

所以我用它如下:

db.nodes.find({$where: kName})

但我没有返回有效结果,因为我知道有一个'黄金'字段名称

然后我尝试了:

db.nodes.find({$where: kName()})

再次失败。

然后我修改了函数:

function kName(obj){
   for (var k in obj){
       if(k.startsWith('gold')){
           return obj
         }
   }
}

我又试过了     db.nodes.find({$ where:kName()}) 并且失败了。

然后尝试了

db.nodes.find({$where: kName(obj)})

所以我的问题是:

如何使用我自己的JS函数来利用Mongodb中的$ where子句来查找字段名称。

1 个答案:

答案 0 :(得分:0)

尝试使用$ exists:

db.nodes.find({kName:{$exists: true}})

它返回包含指定键或属性的所有文档。请参阅$exists

的MongoDb文档