首页 > 解决方案 > 使用嵌套文档查找查询会引发语法错误

问题描述

我试图获取place_id等于4使用以下查询的所有文档,但出现此错误:

SyntaxError: missing : after property id @(shell):1:23.

我输入错误了吗?我正在使用的查询是:

db.sidebar.find({ result.place_id: 4 });

这是一个示例文档:

{  
    "_id":ObjectId("5aebb473e8e191cb74ef8877"),
    "result":{  
        "place_id":4,
        "formatted_address":"589 Doyle Divide",
        "geometry":{  
            "location":{  
                "lat":"-18.8806",
                "lng":"177.1928"
            }
        },
        "international_phone_number":"(571) 978-2039 x11427",
        "name":"Walker Inc",
        "opening_hours":{  
            "weekday_text":[  
                "Monday: 01:00 PM – 03:30 PM",
                "Tuesday: 01:00 PM – 03:30 PM",
                "Wednesday: 01:00 PM – 03:30 PM",
                "Thursday: 01:00 PM – 03:30 PM",
                "Friday: 01:00 PM – 03:30 PM",
                "Saturday: 01:00 PM – 03:30 PM",
                "Sunday: 01:00 PM – 03:30 PM"
            ]
        },
        "url":"https://maps.google.com/?cid=4",
        "website":"http://www.Stracke - Wintheiser.com/"
    }
}

标签: javascriptmongodbmongodb-query

解决方案


您需要使用点符号来访问嵌入文档的字段。这意味着您需要在这些字段周围添加引号:

db.sidebar.find({ "result.place_id": 4 });

您可能认为这也应该有效:

db.sidebar.find({ result: { place_id: 4 });

但是,虽然前者要求 MongoDB在一个字段(也可能包含其他字段)内查找具有place_id值为 的字段的文档,但后者将查找子文档的完全匹配,也就是说,它将匹配仅字段为的文档,其中没有任何其他字段。4resultresult { place_id: 4 }


推荐阅读