我正在运行Mongo DB 3.6版,我正在使用mongo shell。我在MacOS Sierra上运行它。我对这个多行查询感到非常悲痛。我将它从Sublime Text复制并粘贴到Mongo Shell。
好的,这是查询:
> 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
> ])
所以,让我们来看看我遇到错误时的组合,以及当我没有错误时
1)按原样运行查询,这是shell中发生的情况:
{"$unwind": "$FieldValues"}
我应该指出,最后一行是我当前的#34;切入点" (我无法想到一个更好的名字),而我的诅咒就在"]的结尾了#34;
2)运行查询,只是没有最后一次" $ unwind"。
一切正常。
3)使用最后一个" $ unwind"运行查询在一条线上。
这意味着:
{{1}}
然后,一切正常。
结论/问题
那么,WTF?当我将这个查询粘贴在漂亮的打印中时,为什么Mongo Shell会出现问题,最后一次" $ unwind"?
我还应该指出它不是" $ unwind"导致问题的本身。当我将其粘贴到管道中时,我在管道中添加的任何其他查询都会导致类似的错误。