在mogodb-nodejs驱动程序中查找同一集合中的不同文档

问题描述 投票:0回答:1

下面是详细信息:调度集合

"_id" : ObjectId("5e27fd3da42d441fe8a89580"),
        "dispatched" : false,
        "dispatchableItems" : [
                {
                        "_id" : ObjectId("5e26be2cc13b7149d0a95110"),
                        "itemCategory" : "Accessories",
                        "itemName" : "key chain",
                        "city" : "mumbai",
                        "itemCode" : "AKCME1",
                        "itemCount" : 20,
                        "fixeditemCount" : 2
                },
                {
                        "_id" : ObjectId("5e26be2cc13b7149d0a95111"),
                        "itemCategory" : "Handbags",
                        "itemName" : "kalinz purple long chain handbag",
                        "city" : "mumbai",
                        "itemCode" : "HKHE1",
                        "itemCount" : 5,
                        "fixeditemCount" : 1
                }
        ],
        "weekday" : "FR",
        "toBeDispatchedBy" : ObjectId("5e2696c683201450a8ddb1dc"),
        "toBeDispatchedTo" : ObjectId("5e2696f883201450a8ddb1df"),
        "toBeDispatchedOn" : ISODate("2020-02-01T18:30:00Z")

并且有多个文档,一个文档是

"_id" : ObjectId("5e27fd3da42d441fe8a89087"),
        "dispatched" : true,
        "dispatchableItems" : [
                {
                        "_id" : ObjectId("5e26be2cc13b7149d0a00997"),
                        "itemCategory" : "Accessories",
                        "itemName" : "key chain",
                        "city" : "mumbai",
                        "itemCode" : "AKCME1",
                        "itemCount" : 30,
                        "giftCount" : 2
                },
                {
                        "_id" : ObjectId("5e26be2cc13b7149d0a95678"),
                        "itemCategory" : "Handbags",
                        "itemName" : "kalinz purple long chain handbag",
                        "city" : "mumbai",
                        "itemCode" : "HKHE1",
                        "itemCount" : 10,
                        "giftCount" : 1
                }
        ],
        "weekday" : "FR",
        "toBeDispatchedBy" : ObjectId("5e2696c683201450a8ddb1dc"),
        "toBeDispatchedTo" : ObjectId("5e2696f883201450a8ddb1df"),
        "toBeDispatchedOn" : ISODate("2020-01-25T18:30:00Z")

1:我需要显示ISODate(“ 2020-02-01T18:30:00Z”)和ISODate(“ 2020-01-25T18:30:00Z”)(即上周D-7的文件) )2:我将从req.body {“ toBeDispatchedBy”,“ toBeDispatchedto”}中获得此信息这是我尝试过的

db.orders.aggregate([
    {'$match': {'toBeDispatchedBy': ObjectId("5e2696c683201450a8ddb1dc"),
            "toBeDispatchedto": ObjectId("5e2696f883201450a8ddb1df"),
           '$or': [
                {
                    'toBeDispatchedOn': ISODate("2020-02-01T18:30:00Z")
                }, {
                    'toBeDispatchedOn': ISODate("2020-01-25T18:30:00Z")
                }]}}])

但是我只获取ISODate(“ 2020-01-25T18:30:00Z”)的文档此外,这是我实际需要的响应:

"dispatchDetails": [
                   {   "toBeDispatchedOn": ISODate("2020-02-01T18:30:00Z")
                        "itemCategory" : "Accessories",
                        "itemName" : "key chain",
                        "city" : "mumbai",
                        "itemCode" : "AKCME1",
                        "itemCount" : 30,
                        "giftCount" : 2,
                       "lastWeekData":[{"toBeDispatchedOn": ISODate("2020-01-25T18:30:00Z")
                                        "itemCount" : 30,
                                        "giftCount" : 2}]
                },
                {
                        "itemCategory" : "Handbags",
                        "itemName" : "kalinz purple long chain handbag",
                        "city" : "mumbai",
                        "itemCode" : "HKHE1",
                        "itemCount" : 10,
                        "giftCount" : 1,
                        "lastWeekData":[{"toBeDispatchedOn": ISODate("2020-01-25T18:30:00Z")
                                        "itemCount" : 30,
                                        "giftCount" : 2}]
                }
        ]

此集合中有很多文档,我需要根据需要从“ toBeDispatchedBy”,“ toBeDispatchedto”显示当前日(toBeDispatchedOn)和D-7(toBeDispatchedOn-7)日的文档。主体,我需要在nodejs中实现此查询]

node.js mongodb mongoose
1个回答
0
投票

考虑到您正在使用mongoose,您可以执行以下操作:

const { toBeDispatchedBy, toBeDispatchedTo } = req.body;
const result = await Order.find({
  toBeDispatchedBy,
  toBeDispatchedTo,
  toBeDispatchedOn: {
    $in: [new Date("2020-02-01T18:30:00Z"), new Date("2020-01-25T18:30:00Z")]
  }
});

您不需要对简单的查找操作使用聚合。

© www.soinside.com 2019 - 2024. All rights reserved.