2016-07-25 4 views
0

でフィールドを参照することはできません私はMongoDBのコレクションPH_locationを持っており、これはその中の一つの文書である:MongoDBは:スペース

> 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

フィールド名には印刷できない文字が含まれている可能性があります。 – styvane

答えて

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 

ある場合。

+0

>確かにdb.PH_location.find({"Postal \ u00a0Code":2800})は動作しますか? – sergiuz

+0

はい、私はそれをテストしました。実際には非破壊空間であると仮定します。 :-) – helmy

+0

私のシェルで動作しません – sergiuz