我一直在尝试为我的网站制作一个upvote和downvote功能。这是我的架构
{
"_id" : ObjectId("5aa639cb4add7a1c58507ac1"),
"vote" : -7,
"votedBy" : [],
"Fbid" : "109590486545309",
"imageId" : "86i1dr8apv",
"email" : "emnnevbjyo_1520686942@tfbnw.net",
"event" : "selfie",
"__v" : 0}
现在,我正在尝试的是使用 imageId 查找我的文档,然后查看 votedBy 数组以查找特定选民。如果具有某些值的查询结果根据upvoting或downvoting的逻辑行事。这是我的upvote和downvote代码
app.get('/:id/love', (req, res) => {
console.log("Hitting");
var image_Id = req.params.id;
var fb_id = req.user.id;
var query = {
"imageId": image_Id
}
var upvote = {
$inc: {
vote: 1
},
$push: {
votedBy: req.user.id
}
}
var downvote = {
$pull: {
votedBy: req.user.id
},
$inc: {
vote: -1
}
}
likeImformation.find({
"imageId": image_Id
}, {
"votedBy": fb_id
}).count(function(err, count_num){
if(count_num===0){
likeImformation.findOneAndUpdate(query, upvote, function (err, voted) {
if (err) {
res.status(404)
} else {
console.log("upvoted");
res.send("upvoted");
}
});
}
else if(count_num>0){
console.log(count_num);
likeImformation.findOneAndUpdate(query, downvote, function (err, voted) {
if (err) {
res.status(404)
} else {
console.log("downupvoted");
res.send("downvoted");
}
});
}
})
问题是我无法编写查询,搜索文档然后在文档中搜索数组元素并将其与“votedBy”匹配。
答案 0 :(得分:0)
我们可以使用MongoDB中的and
编写查询
{$and:[{
"imageId": image_Id
}, {
"votedBy": fb_id
}]}
它将按预期工作