我有一个MongoDB集合PH_location
,这是其中的一个文档:
> db.PH_location.findOne({})
{
"_id" : ObjectId("579662fec773d83e625f71e8"),
"Postal Code" : 2800,
"town" : "Bangued",
"province" : "Abra",
"metro" : ""
}
我无法引用字段"Postal Code"
。使用该字段的查找和更新操作无法找到它。例如:
> db.PH_location.findOne({},{"Postal Code":1})
{ "_id" : ObjectId("579662fec773d83e625f71e8") }
和
> db.PH_location.updateMany({}, {$rename:{"Postal Code":"ZIP_code"}})
{ "acknowledged" : true, "matchedCount" : 2271, "modifiedCount" : 0 }
任何想法可能是什么问题?
答案 0 :(得分:0)
我敢打赌这是一个不间断的空间,而不是一个普通的空间。
试试这个:
db.PH_location.find({"Postal\u00a0Code" : 2800})
您可以使用以下方法调试密钥中的字符:
function codepoints(str) {
var result = "";
for (var i = 0, len = str.length; i < len; i++) {
result += "'" + str[i] + "':" + str.charCodeAt(i) + ", ";
}
return result;
}
function walk(obj) {
for (prop in obj) {
if (obj.hasOwnProperty(prop) && isNaN(prop)) {
print(prop + " " + codepoints(prop));
walk(obj[prop]);
}
}
}
var cursor = db. PH_location.find()
while ( cursor.hasNext() ) {
obj = cursor.next();
walk(obj);
}
在输出中查找空格' '
。你会看到:
' ':32
如果是空格,或
' ':160
如果它是非中断空格,或者其他代码,如果它是其他一些字符。