0
db.stuff.save({"InnerDocument": {"Id":"123"}});
db.stuff.save({"InnerDocument": {"ID":"123"}});
是否有可能實現以下?
> db.stuff.find({"InnerDocument.id":"123"}).count();
2
db.stuff.save({"InnerDocument": {"Id":"123"}});
db.stuff.save({"InnerDocument": {"ID":"123"}});
是否有可能實現以下?
> db.stuff.find({"InnerDocument.id":"123"}).count();
2
有沒有簡單的方法來做這樣的事情。你可以通過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提到的,沒有運營商這樣的事情。
這是不可能的。你可以做一個$or
像這樣的查詢:
db.stuff.find({$or:[{"InnerDocument.id":"123"}, {"InnerDocument.Id":"123"}, {"InnerDocument.ID":"123"}]}).count();
但這是非常醜陋的。我建議你保持你的數據和你的字段命名約定乾淨和一致,所以你不必這樣做。