繁体   English   中英

Mongoose 聚合查询用作 mongodb 查询但无法转换为 mongoose

[英]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 上给出了正确的 output

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))
    })

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM