Mongodb 是否在查找中使用“匹配”筛选结果?蒙哥达

Mongodb 是否在查找中使用“匹配”筛选结果?蒙哥达,mongodb,collections,mongodb-query,aggregation-framework,Mongodb,Collections,Mongodb Query,Aggregation Framework,我完全不知道应该如何使用管道来过滤我的查找结果数组。下面是代码 { "_id" : ObjectId("5d73d591b35c943a201837e2"), "itemName" : "Vape", "itemSellingPrice" : "350", "itemPurchasePrice" : "300", "itemAveragePurchasePrice" : "133.33333333333334", "itemBaseUnit" :

我完全不知道应该如何使用管道来过滤我的查找结果数组。下面是代码

{
    "_id" : ObjectId("5d73d591b35c943a201837e2"),
    "itemName" : "Vape",
    "itemSellingPrice" : "350",
    "itemPurchasePrice" : "300",
    "itemAveragePurchasePrice" : "133.33333333333334",
    "itemBaseUnit" : "Unit 2",
    "itemReorderPoint" : "100",
    "itemTotalQuantity" : "300",
    "itemSumQuantity" : "500",
    "itemLocation" : "1",
    "itemSubLocation" : "sub loc 1",
    "itemDateCreated" : ISODate("2019-09-07T16:06:41.521Z"),
    "itemID" : 88,
    "__v" : 0,
    "salesData" : [ 
        {
            "_id" : ObjectId("5d73e23ed8422d2ba42049b4"),
            "salesOrderCustomerName" : "Manong Puring",
            "salesOrderInvoiceNumber" : "1123",
            "salesOrderAddress" : "Jan lang",
            "salesOrderPaymentStatus" : "Open",
            "salesOrderTotalPaid" : "0",
            "salesOrderTotalAmount" : "2800",
            "salesOrderDiscrepancyAmount" : "2800",
            "salesOrderItemList" : [ 
                {
                    "_id" : ObjectId("5d73e23ed8422d2ba42049b5"),
                    "salesOrderSelectedItem" : "Vape",
                    "salesOrderAverage" : "133.33333333333334",
                    "salesOrderNewPrice" : "350",
                    "salesOrderPurchasePrice" : "300",
                    "salesOrderQuantity" : "8",
                    "salesOrderSubTotal" : "2800"
                }
            ],
            "salesOrderDateCreated" : ISODate("2019-09-07T16:00:00.000Z"),
            "salesOrderSubLocation" : "sub loc 1",
            "salesOrderLocation" : "1",
            "salesOrderID" : 62,
            "__v" : 0
        }, 
        {
            "_id" : ObjectId("5d73e37164ade31b40775038"),
            "salesOrderCustomerName" : "Manong Puring",
            "salesOrderInvoiceNumber" : "123",
            "salesOrderAddress" : "Jan lang",
            "salesOrderPaymentStatus" : "Open",
            "salesOrderTotalPaid" : "0",
            "salesOrderTotalAmount" : "350",
            "salesOrderDiscrepancyAmount" : "350",
            "salesOrderItemList" : [ 
                {
                    "_id" : ObjectId("5d73e37164ade31b40775039"),
                    "salesOrderSelectedItem" : "Vape",
                    "salesOrderAverage" : "133.33333333333334",
                    "salesOrderNewPrice" : "350",
                    "salesOrderPurchasePrice" : "300",
                    "salesOrderQuantity" : "1",
                    "salesOrderSubTotal" : "350"
                }
            ],
            "salesOrderDateCreated" : ISODate("2019-09-07T16:00:00.000Z"),
            "salesOrderSubLocation" : "sub loc 2",
            "salesOrderLocation" : "1",
            "salesOrderID" : 63,
            "__v" : 0
        }
    ]
}
我只想使用
salesOrderSubLocation:“sub loc 1”
但它也显示了带有子loc 2的数据。搜索了一段时间,但找不到我的确切问题

这是我的问题

db.getCollection('itemmodels').aggregate(

{ '$match': { itemName: 'Vape' } },
{ '$lookup':
     { 
       from: 'itemmodels',
       let: { "itemName": "$itemName" },
       pipeline: [
        { $match: {
          "salesOrderSubLocation": "sub loc 1",
          "salesOrderItemList.salesOrderSelectedItem": "$$itemName"
        }
        }
      ],
       as: 'salesData' 
    } 
})

有什么想法吗,伙计们?我不想在前端筛选结果,因为这会导致将来大量数据出现问题。

您是否在同一个集合中查找?此外,您当前的查询无法生成您提到的输出。是的,该输出来自使用localfield和foreignfield进行的常规查找。没有不相同的集合,请相应地更新问题。