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

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

本文关键字:嵌套 JSON 数组 获取 nodejs http get with mongoose 使用      更新时间:2023-09-26

我有一个JSON,它表示公寓列表:

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

我想得到某个userIDquestionID数组

我正在使用这个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);
    });

附言:我也看不出你有什么理由需要在这里使用$和运算符。来自文件:

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