Mongodb 汇总 $size 未返回结果?
Mongodb aggregate $size not returning results?
我有这样的数据:
[
{
"_id": "60ccb13a21d65f0c7c4c0690",
"username": "testuser",
"friendRequests": [
{
"_id": "60ccb13a21d65f0c7c4c0690",
}
]
}
]
代码如下:
router.use(async function(req, res, next){
try {
res.locals.fr = await User.aggregate([
{$match:{username: "testuser"}},
{$project: {
frCount: {
$size: "$friendRequests"
}
}}]),
res.locals.login = req.isAuthenticated();
res.locals.newProfile = req.user;
next();
}
catch {
res.locals.login = req.isAuthenticated();
res.locals.newProfile = req.user;
next();
}
});
不应该 return 这个吗?
[
{
"frCount": 1,
"_id": ObjectId("60ccb13a21d65f0c7c4c0690")
}
]
然后如果我把它放在 EJS 中:
<p>requests: <%= fr.frCount %></p>
不应该 return 1 吗?但是,它 return 没什么,我不确定为什么。
您返回的不是对象。这是一个数组:https://mongoplayground.net/p/dCVRGl2EXxP
[
{
"_id": "60ccb13a21d65f0c7c4c0690",
"frCount": 2
}
]
因此,您需要执行 fr[0].frCount
来获取值。
我有这样的数据:
[
{
"_id": "60ccb13a21d65f0c7c4c0690",
"username": "testuser",
"friendRequests": [
{
"_id": "60ccb13a21d65f0c7c4c0690",
}
]
}
]
代码如下:
router.use(async function(req, res, next){
try {
res.locals.fr = await User.aggregate([
{$match:{username: "testuser"}},
{$project: {
frCount: {
$size: "$friendRequests"
}
}}]),
res.locals.login = req.isAuthenticated();
res.locals.newProfile = req.user;
next();
}
catch {
res.locals.login = req.isAuthenticated();
res.locals.newProfile = req.user;
next();
}
});
不应该 return 这个吗?
[
{
"frCount": 1,
"_id": ObjectId("60ccb13a21d65f0c7c4c0690")
}
]
然后如果我把它放在 EJS 中:
<p>requests: <%= fr.frCount %></p>
不应该 return 1 吗?但是,它 return 没什么,我不确定为什么。
您返回的不是对象。这是一个数组:https://mongoplayground.net/p/dCVRGl2EXxP
[
{
"_id": "60ccb13a21d65f0c7c4c0690",
"frCount": 2
}
]
因此,您需要执行 fr[0].frCount
来获取值。