mongodb - 修改mongoose查询数据依赖输入数组
问题描述
我在一个数组中有数百个 id。在使用猫鼬分页从此集合中获取记录时,因此我想在结果中添加一个额外的键,如果此数组中存在结果 ID,那么它将添加一个键 is_checked true 否则为 false。但我不想在结果集上运行循环。应该用查询本身来完成
Existing query
var pageNo = parseInt(Params.page) || 1;
var size = parseInt(Params.size) || 10;
var userId = parseInt(Params.user_id);
var options = {
populate: [],
page: pageNo,
limit: size
};
return await this.listModel.paginate({ user_id: userId, deleted_at: null }, options);
Here I am fetching the record from the collection for given userId with pagination
Now I have an array which has array of ids
var recipientId = ["5ebe7d8355d75d56cbfb4d92", "5ebe7d8355d75d56cbfb4d96", "5ebe7d8355d75d56cbfb4d96"]
My current output is
{
"success": true,
"message": "Data",
"data": {
"docs": [
{
"_id": "5ebe7d8355d75d56cbfb4d92",
"name": "test",
"mobile": "1234567890"
"__v": 0
},
{
"_id": "5ebe7d8355d75d56cbfb4d93",
"name": "test one",
"mobile": "6666"
"__v": 0
}
],
"total": 20,
"limit": 10,
"page": 1,
"pages": 2
}
}
Excpected Output
{
"success": true,
"message": "Data",
"data": {
"docs": [
{
"_id": "5ebe7d8355d75d56cbfb4d92",
"name": "test",
"mobile": "1234567890",
"is_checked": true
"__v": 0
},
{
"_id": "5ebe7d8355d75d56cbfb4d93",
"name": "test one",
"mobile": "6666",
"is_checked": false
"__v": 0
}
],
"total": 20,
"limit": 10,
"page": 1,
"pages": 2
}
}
解决方案
据我了解,您想查询包含 id 数组的记录,并且当该数组中存在某个 id 时,您想添加一个额外的字段 is_checked,true 或 false。
您可以通过聚合来完成,如下例所示,我们正在根据位置搜索记录,但是我们有一个水果数组,如果该数组中存在香蕉,我们将添加一个新字段 has_banana
工作示例 - https://mongoplayground.net/p/2dNYYzJid8S
db.collection.aggregate([
{
$match: {
location: "jaipur"
}
},
{
$project: {
"store location": "$location",
"has_bananas": {
$in: [
"bananas",
"$in_stock"
]
}
}
}
])
推荐阅读
- python - 使用 requests-html python 抓取网站时清空 img src
- php - 每次上传新文件时,如何将保存的文件保存在单元格中?我正在使用 laravel 5.5
- r - 是如果 na 重新启动计数
- android - ccache会影响后续android构建中的错误吗
- android - Kotlin 保持对类的引用并更新
- python - pyqt - 表格中的拖放行无法拖动单元格中的图像和小部件
- wordpress - WP Gutenberg 块回调 - 如何添加动态 CSS(到头部)?
- git - Git 无法正确显示 UTF-8 文件名
- azure-webjobs - 公开部署为 Web 作业的红隼服务器以进行外部交互
- python - Python SQLITE 更新子句未更新