javascript - 如何在 Mongoose 聚合中找到数组的长度
问题描述
我正在查找猫鼬中的两个集合:
我的第一个收藏:[文件夹]
{
"_id" : ObjectId("00000000c27b9d0d045ff376"),
"folder_name" : "Testing 2",
"status" : "Y",
"parent_id" : [
ObjectId("00000000666e6e2084393a11")
],
"created_date" : ISODate("2018-07-24T15:10:38.456+05:30"),
"updated_date" : ISODate("2018-07-24T15:10:38.456+05:30")
}
我的第二个收藏:[检查]
{
"_id" : ObjectId("5b55bb043f37a8f292e1ada2"),
"project_id" : ObjectId("00000000666e6e2084393a11"),
"inspection_data" : [
{
"_id" : ObjectId("5b3b3aa86b20153284d45a54"),
},
{
"_id" : ObjectId("5b3b3aa86b20153284d45a54"),
}
]
}
我的查找查询
mongo.folder.aggregate([
{
$lookup:
{
from: 'inspections',
localField: '_id',
foreignField: 'project_id',
as: 'projectdata'
}
},
{ $match : {
$and: [
{'parent_id': ObjectId(req.body.folder_id)},
]
}
},
{
"$project": {
"_id" : 0
"inspection_count" {$size:"$projectdata.inspection_data"}
}
}
]).exec(function (err, response) {
console.log(response) // It should show inspection count as 2 but its showing 1
})
如果我正在为项目数据进行放松,则意味着只获取一个数据。还有其他方法吗
解决方案
$lookup
返回一个数组。就像是
{"projectdata":[{... "inspection_data" : [{},{}]}]}
所以projectdata.inspection_data
ia 数组的数组,即[[{},{}]]
大小为 1。使用$arrayElemAt
索引 0 访问内部数组,然后$size
返回检查数据的长度。
"inspection_count" {"$size":{"$arrayElemAt":["$projectdata.inspection_data",0]}}
推荐阅读
- javascript - Swiper 拇指滑块不工作
- firebase - 如何使用颤振将带有标题和描述的视频上传到 Firebase?
- google-maps - Google在quasar vue问题中自动填充没有地图的地址
- python - 直方图在 python 中不显示任何内容
- dialogflow-es - 如何在对话流中向系统实体添加同义词?
- python - 使用 Python 将 Excel 转换为 JSON,如何根据需要格式化这些数据?
- python - 我可以使用 Nginx 作为 Web 服务器而不使用 Flask 中的 uWSGI 或 Gunicorn 等任何 WSGI 库吗?
- python - 将行插入到 Dataframe 的特定索引
- mongodb - Mongodb聚合跨越多个集合,分组和计数
- angular - 测试中的 Angular ngrx 单元测试调度操作不起作用