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