繁体   English   中英

使用$ http.get在嵌套JSON中获取数组(与nodejs结合使用)

[英]Getting an array inside a nested JSON using $http.get (mongoose with nodejs)

我有这个JSON,它代表一个公寓清单:

{
    "_id": {
        "$oid": "5673d1dcf93fe452d80c2c2c"
    },
    "street": "myStreet",
    "buildingNumber": 1,
    "apartmentNumber": 1,
    "UsersAndQuestions": [
        {
            "userID": "5673afe4cb62303816bd3d5c",
            "questionID": [
                "5669d90a058ceddc158e97e2",
                "4668d80b158ceggc158e97f2"
            ]
        }
    ]
}

我想获取某个userIDquestionID userID数组。

我正在使用此http.get尝试获取它:

app.get('/api/listing/getQuestionsOfUserInListing/:userid/:listingid', function (req, res) {
        var user = req.params.userid;
        var listing = req.params.listingid;
        Listing.find({
                $and: [
                    {_id: listing},
                    {'UsersAndQuestions.userID': user}
                ]
            }
            , function (err, result) {
                res.json(result);
            });
    });

但是我只是找回了整个 JSON(恰好是我在问题开始时发布的那个)。

我怎样才能得到
"questionID": ["5669d90a058ceddc158e97e2", "4668d80b158ceggc158e97f2"]

谢谢!

如此处所述您可以使用以下投影来做到这一点:

Listing.findOne( {_id: listing, 'UsersAndQuestions.userID': user}, 
    {_id: 0, 'UsersAndQuestions.$': 1}, 
    function (err, result) {
        res.json(result.UsersAndQuestions[0].questionID);
    });

PS另外,我没有看到您需要在此处使用$ and运算符的任何原因。 文档

复合查询可以为集合文档中的多个字段指定条件。 隐式地,逻辑AND连接将复合查询的子句连接起来,以便查询选择集合中符合所有条件的文档。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM