猫鼬聚合查询作为 mongodb 查询工作但无法转换为猫鼬

Mongoose aggregate query working as a mongodb query but not able to convert to mongoose

下面是我的JSON结构

  [{
        "_id" : ObjectId("626204345ae3d8ec53ef41ee"),
        "categoryName" : "Test Cate",
        "__v" : 0,
        "createdAt" : ISODate("2022-04-22T01:26:11.627Z"),
        "items" : [
                {
                        "itemName" : "Cate",
                        "user" : ObjectId("6260729af547915d9d876c23"),
                        "itemDescription" : "slkkndanslk",
                        "itemImage" : "/images/camping-table.jpeg",
                        "_id" : ObjectId("626204339b24b2ead6c05a70"),
                        "updatedAt" : ISODate("2022-04-22T01:26:11.627Z"),
                        "createdAt" : ISODate("2022-04-22T01:26:11.627Z")
                }
        ],
        "updatedAt" : ISODate("2022-04-22T01:26:11.627Z")
},
{
        "_id" : ObjectId("62620e725ae3d8ec53ef4aa8"),
        "categoryName" : "sdsad",
        "__v" : 0,
        "createdAt" : ISODate("2022-04-22T02:09:54.028Z"),
        "items" : [
                {
                        "itemName" : "asdada",
                        "user" : ObjectId("62620e6299145edb95147482"),
                        "itemDescription" : "asdsadad",
                        "itemImage" : "/images/camping-table.jpeg",
                        "_id" : ObjectId("62620e7299145edb95147486"),
                        "updatedAt" : ISODate("2022-04-22T02:09:54.028Z"),
                        "createdAt" : ISODate("2022-04-22T02:09:54.028Z")
                },
                {
                        "itemName" : "dsdsa",
                        "user" : ObjectId("62620e6299145edb95147482"),
                        "itemDescription" : "adasdad",
                        "itemImage" : "/images/camping-table.jpeg",
                        "_id" : ObjectId("62621b9c3662e0b4acabb71f"),
                        "updatedAt" : ISODate("2022-04-22T03:06:04.727Z"),
                        "createdAt" : ISODate("2022-04-22T03:06:04.727Z")
                }
        ],
        "updatedAt" : ISODate("2022-04-22T03:06:04.727Z")
}]

这只是一个文档,还有很多文档。同一类别中也可能有多个项目。 我想获取具有特定用户标识的所有类别中的所有项目。在下面的 MongoDB 中是我的查询,它在 mongo shell

上给出了正确的输出
db.trades.aggregate([
  {
    $unwind: "$items"
  },
  {
    $match: {
      "items.user": ObjectId("6260729af547915d9d876c23")
    }
  }
]).pretty()

在 mongoose 我正在做以下事情但没有得到结果

tradeModel.aggregate([ { $unwind : "$items" }, { $match : { "items.user" : id } } ])
    .then(res => {
        console.log(JSON.stringify(res))
    })

让我知道我错过了什么

您的参数 ID 类型为 string,但 mongodb 存储类型为 ObjectId

改变

tradeModel.aggregate([ { $unwind : "$items" }, { $match : { "items.user" : id } } ])
    .then(res => {
        console.log(JSON.stringify(res))
    })

进入

tradeModel.aggregate([ { $unwind : "$items" }, { $match : { "items.user" : {"$oid": id} } } ])
    .then(res => {
        console.log(JSON.stringify(res))
    })

得到答案我们可以像这样在搜索中使用 ObjectId(id)

tradeModel.aggregate([ { $unwind : "$items" }, { $match : { "items.user" : ObjectId(id) } } ])
    .then(res => {
        console.log(JSON.stringify(res))
    })