node.js - 如何使用 $match 查找集合中的项目
问题描述
我收集了信任的联系人。我需要按用户过滤文档。当我使用方法 findOne 时,我得到了一个结果,但是当我使用 $match 时,我得到了一个空数组。我不知道为什么 $match 对我不起作用。
收集信任的联系人:
{
"_id": {
"$oid": "5d76008e4b98e63e58cb34cc"
},
"date": {
"$date": "2019-09-09T07:32:20.174Z"
},
"approvedTrustedContacts": [
{
"_id": {
"$oid": "5d764e411b7476462cf6b540"
},
"user": {
"$oid": "5c5ecaf6134fc342d4b1a9d5"
}
},
{
"_id": {
"$oid": "5d7750af52352918f802c474"
},
"user": {
"$oid": "5c64968cae53a8202c963223"
}
}
],
"pendingApprovalContacts": [],
"waitingForApprovalContacts": [],
"user": {
"$oid": "5d76008e4b98e63e58cb34cb"
}
},
{
"_id": {
"$oid": "5d7605f5e7179a084efa385b"
},
"date": {
"$date": "2019-09-09T07:32:20.174Z"
},
"approvedTrustedContacts": [
{
"_id": {
"$oid": "5d764e411b7476462cf6b541"
},
"user": {
"$oid": "5d76008e4b98e63e58cb34cb"
}
}
],
"pendingApprovalContacts": [],
"waitingForApprovalContacts": [],
"user": {
"$oid": "5c5ecaf6134fc342d4b1a9d5"
}
}
当我使用方法 findOne
const user = await TrustedContacts.findOne({ user: "5d76008e4b98e63e58cb34cb" })
我有结果,但是当我使用 $match 时,我得到了空数组
result1 = await TrustedContacts.aggregate([
{ $match: { user: "5d76008e4b98e63e58cb34cb" } },
]);
解决方案
有用,
const ObjectId = require('mongodb').ObjectId;
result1 = await TrustedContacts.aggregate([
{ $match: { user: ObjectId("5d76008e4b98e63e58cb34cb") } },
]);
推荐阅读
- php - http.post 不工作/在 Flutter 中发送空值
- python - 为什么当键确实在列表中时,“mydict 中的键为真”返回 false?
- c++ - 关于打印 STL 容器以进行认可测试的公约
- javascript - vue-chart.js / vuex:当 vuex 状态改变时图表不更新
- postgresql - PostgresSQL 函数需要很长时间
- ubuntu - 如何使用 user@hostname:$ 启动终端
- javascript - 这个元素可能在来自不同 src 的 iframe 内。目前 chropath 不支持它们
- python - 我们可以在 for 循环中声明一个空函数吗?
- rest - 无法对 github 存储库统计信息进行分页
- spring - @ControllerAdvice 未捕获 Rest API 异常