示例:
db.stuff.save({"InnerDocument": {"Id":"123"}});
db.stuff.save({"InnerDocument": {"ID":"123"}});
是否有可能实现以下目标?
> db.stuff.find({"InnerDocument.id":"123"}).count();
2
答案 0 :(得分:0)
没有简单的方法可以做那样的事情。你可以通过mongodb的map-reduce框架来实现。这是一个例子:
db.stuff.mapReduce(
function(){
var key = 'id';
var value_temp = '123';
for (i in this['InnerDocument']){
if (key === i.toLowerCase() && this['InnerDocument'][i] === value_temp){
emit(key,1);
}
}
},
function(key,value){
return Array.sum(value);
},
{out : {inline : 1}}
)['results'][0];
正如这里提到的MongoDB case insensitive key search,没有像这样的运算符。
答案 1 :(得分:0)
这是不可能的。您可以执行$or
查询,例如:
db.stuff.find({$or:[{"InnerDocument.id":"123"}, {"InnerDocument.Id":"123"}, {"InnerDocument.ID":"123"}]}).count();
但那很难看。我建议您保持数据和字段名称惯例的清晰和一致,这样您就不必这样做了。