node.js - 在 MongoDB 中按 INC 值查找文档
问题描述
从我的网站客户端,我向后端 Node.js 服务器发送 API 请求,并通过 ID 查找特定文档,如下所示:
var ObjectID = require('mongodb').ObjectID;
db.collection('users').find({"_id": new ObjectID(req.body._id)})
其中req.body._id等于整个 ID 字符串,例如'5d0381ad681a2a3aa1dc5872'
但是我宁愿只发送字符串的INC(不断递增的值)部分作为参数:'c5872'
我应该如何仅根据 INC 值查找特定文档?(我假设 INC 是独一无二的)
任何帮助是极大的赞赏。
解决方案
您可以在字符串中临时转换您的 _id 以便能够使用正则表达式:
db.users.aggregate([
{
$addFields: { id: { $toString: '$_id' } }
},
{
$match: { id: /c5872$/ }
}
])
更简洁的解决方案是直接使用子字符串创建字段,以避免使用正则表达式:
db.users.aggregate([
{
$addFields: { id: { $substr: [{ $toString: '$_id' }, 19, 24] } }
},
{
$match: { id: 'c5872' }
}
])
https://docs.mongodb.com/manual/reference/operator/aggregation/addFields/ https://docs.mongodb.com/manual/reference/operator/aggregation/substr/
推荐阅读
- c# - 无法访问已释放的上下文实例
- docker - 在不使用 imagePullSecrets 的情况下从 kubernetes 中的私有存储库中提取图像
- python - 用于检查调试符号的 Python
- bash - 如何使用 shell 脚本从两个句子中删除重复的单词?
- python - python.dataScience 是 VS Code 中的“未知配置设置”
- ruby - 有没有不同的方法来调用具有相似符号的变量的方法?
- javascript - 表单 onsubmit 返回 false 并仍然继续提交表单
- javascript - 当用户在网页上时,定期询问用户是否希望保持登录状态的最佳方式是什么?
- python - 是否可以用字符串计算,当和字符串包含字典的键时
- python - 创建 DataManager 类,它只下载/创建数据集,一旦调用但尚未创建