首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mogodb驱动程序中查找同一集合中的不同文档

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

Stack Overflow用户
提问于 2020-01-31 09:33:32
回答 1查看 34关注 0票数 0

下面是详细信息:分派集合

代码语言:javascript
复制
"_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")

有多个文档,其中一个是

代码语言:javascript
复制
"_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"}那里得到这份文件。

代码语言:javascript
复制
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”),而且我实际上需要这样的回复:

代码语言:javascript
复制
"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}]
                }
        ]

这个集合中有很多文档,我需要在“currentDay”(ToBeDispatchedOn)和D-7(ToBeDispatchedOn 7)的基础上在"toBeDispatchedBy“、"toBeDispatchedto”的基础上显示文档,这是我从req.body获得的,我需要在nodejs中实现这个查询。

EN

回答 1

Stack Overflow用户

发布于 2020-01-31 09:42:21

考虑到您使用的是mongoose,您可以这样做:

代码语言:javascript
复制
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")]
  }
});

您不需要将聚合用于简单的查找操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60001216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档