mongodb搜索字段名是否包含(';something';)

mongodb搜索字段名是否包含(';something';),mongodb,where-clause,Mongodb,Where Clause,因为Mongo是无模式的,所以文档可以有不同的键 我的情况是,我需要搜索字段名[即键名],而不是它的值 我在很多地方读到过关于它的文章,发现使用$where 我意识到这是没有效率的;但那没关系!因为这是生产前的一次调查 因此,我尝试构建查询,但未能生成预期结果,因为我知道该密钥在数据库中可用 我的JS代码: function kName(){ for (var k in obj){ if (k.startsWith('gold')){ return ob

因为Mongo是无模式的,所以文档可以有不同的键

我的情况是,我需要搜索字段名[即键名],而不是它的值

我在很多地方读到过关于它的文章,发现使用
$where
我意识到这是没有效率的;但那没关系!因为这是生产前的一次调查

因此,我尝试构建查询,但未能生成预期结果,因为我知道该密钥在数据库中可用

我的JS代码:

function kName(){
   for (var k in obj){
       if (k.startsWith('gold')){
           return obj
         }
   }
}
因此,我将其用作以下内容:

db.nodes.find({$where: kName})
但我未能返回有效结果,因为我知道有一个“gold”字段名

然后我试着:

db.nodes.find({$where: kName()})
再次失败

然后我修改了函数:

function kName(obj){
   for (var k in obj){
       if(k.startsWith('gold')){
           return obj
         }
   }
}
我又试了一次 find({$where:kName()}) 结果失败了

然后尝试

db.nodes.find({$where: kName(obj)})
所以我的问题是:

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

尝试使用$exists:

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

它返回包含指定键或属性的所有文档。请参阅MongoDb文档以了解

$exists
不支持字段名。它仅在文档存在或不存在时进行搜索。我尝试了你的建议,但没有得到预期的结果。谢谢你的回复。我不知道你是怎么得到这样的印象的:它不检查字段是否存在。查看当布尔值为true时文档所说的内容,$exists与包含fieldYes@Saleem的文档匹配<代码>$exists在文档中查找字段时可以工作。我的例子是
kName
是一个JS函数(不是键名),它应该检查每个字段名,如果它以(“string here”)开头。。所以我的观点是,
$exists
不使用JS函数,而是使用文档的字段(键)。我也试过了,但没有成功。如果我遗漏了什么,请纠正我。。再次感谢您宝贵的时间