我有这个代表公寓列表的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);
});
});
?
谢谢!
答案 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连接连接复合查询的子句,以便查询选择集合中与所有条件匹配的文档。