0
私のmongo文書は、私が何かを「eventCat.1」または「eventCat.2」などの有無をチェックし、更新したい モンゴは
{
"_id": ObjectId("59b0ee362976fb61fc54708d"),
"id_str": "29979814",
"eventCat": {
"1": [2],
"2": [10, 5, 2, 2, 10],
"7": [10],
"8": [10, 5]
}
}
下回るようになり、数値名前で埋め込みフィールドを参照してください。しかし、私の問題は、機能していない関数からフィールドを参照するときです。
db.testCorpus.find({"id_str" : "29979814"}).forEach(function (x) {
tmp=x.eventCat.1;
if(tmp != null) {
print(x.eventCat.1);
}
})
2017-09-20T00:08:53.115+0530 E QUERY [thread1] SyntaxError: missing ; before statement @(shell):1:98
引用符を使用すると、文字列リテラルが印刷されます。私は$を使って引用符を使ってみましたが、役に立たなかった。
db.testCorpus.find({"id_str" : "29979814"}).forEach(function (x) {
tmp='$x.eventCat.1';
if(tmp != null) {
print(tmp);
}
})
> $x.eventCat.1
私は、これは数値フィールド名が原因だと思います。なぜなら、他の埋め込みフィールドでは、私は望ましい出力を得るからです。これを解決する方法はありますか?ありがとうございました。
埋め込みフィールドが連想配列のように振る舞いますか?チャームのように働いた!ありがとう@Julien。 – Rajesh
javascriptオブジェクト(ここでは埋め込みフィールド)は連想配列です。そしてmongodbはjavascriptのfortスクリプトを使います。したがって、埋め込みフィールドは連想配列のように動作します。 'foo.bar'は' foo ['bar'] 'と同じです –