如何使用$ match查找集合中的项目

时间:2019-09-10 10:53:42

标签: node.js mongodb mongoose

我有可信任的联系人集合。我需要按用户筛选文档。当我使用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"  } },
      ]);

1 个答案:

答案 0 :(得分:0)

有效,

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

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