私はMongo DBのバージョン3.6を使用していますが、mongoシェルを使用しています。私はMacOS Sierra上で実行しています。私は、この複数行のクエリで多くの悲しみを感じています。私はSublime TextからMongo Shellにそれをコピーして貼り付けています。Mongo DBシェル - マルチラインクエリが機能しない
は[OK]を、ので、ここでのクエリです:
はdb.submissions.aggregate([
{
"$match": {
"FieldValues.Value": "Craig"
}
},
{
"$lookup": {
"from": "aliases",
"localField": "FieldValues.Name",
"foreignField": "Fields.Field",
"as": "R"
}
},
{
"$unwind": "$R"
},
{
"$unwind": "$R.Fields"
},
{
"$unwind": "$FieldValues"
}
])
それでは、私はエラーを取得するときの組み合わせを介して実行させ、そして私がいないとき
1)は、クエリたままを実行します、これはシェルで何が起こるかです:
> db.submissions.aggregate([
... {
... "$match": {
... "FieldValues.Value": "Craig"
... }
... },
... {
... "$lookup": {
... "from": "aliases",
... "localField": "FieldValues.Name",
... "foreignField": "Fields.Field",
... "as": "R"
... }
... },
... {
... "$unwind": "$R"
... },
... {
... "$unwind": "$R.Fields"
... },
... {
...
Display all 172 possibilities? (y or n)
... wind": "$FieldValues"
2017-11-27T09:46:39.650-0500 E QUERY [thread1] SyntaxError: missing : after property id @(shell):22:6
> }
2017-11-27T09:46:39.652-0500 E QUERY [thread1] SyntaxError: expected expression, got '}' @(shell):1:0
> ])
私は最後の行は、私の現在の「エントリーポイント」(私はそれのためのより良い名前を考えることができない)であることを指摘すべきです私のカーソルは「])」の最後にあります。
2)最後の "$ unwind"なしでクエリを実行します。
すべて動作します。
3)最後の "$ unwind"を1行で実行します。
これが意味:
{"$unwind": "$FieldValues"}
はその後、すべての作品。
結論/質問
ので、WTF?なぜこの最後の "$ unwind"を使ってこのクエリをきれいに貼り付けると、Mongo Shellが怒っているのですか?
また、問題を引き起こすのは「$ unwind」自体ではないことを指摘しておきます。私はそれを貼り付ける際に、同様のエラーが発生するパイプラインに置かれた任意の追加のクエリ
バージョン間で変更があってもクエリ文字列の最大長が不明な場合は、このリンクを参照してください。https://stackoverflow.com/questions/13188463/is-there-a-length-limit- mongo-queries-to-field-values-in-mongo-queries – SteveB