首页 > 解决方案 > 如何使用 $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"  } },
      ]);

标签: node.jsmongodbmongoose

解决方案


有用,

const ObjectId = require('mongodb').ObjectId;

result1 = await TrustedContacts.aggregate([
    { $match: { user:  ObjectId("5d76008e4b98e63e58cb34cb")  } },
  ]);

推荐阅读