使用$ http.get(带有nodejs的mongoose)在嵌套的JSON中获取数组

时间:2015-12-18 09:45:16

标签: javascript json node.js mongodb mongoose

我有这个代表公寓列表的JSON:

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

我想获得某个questionID的{​​{1}}数组。

我正在使用此userID尝试获取它:

http.get

但我刚回到整个 JSON(正好是我在问题开头发布的那个)。

如何才能获得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); }); });

谢谢!

1 个答案:

答案 0 :(得分:1)

正如前面提到的here,你可以通过这样的投射来做到这一点:

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

P.S。此外,我没有看到任何你需要在这里使用$和运算符的原因。来自documentation

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