嵌套数组日期匹配在mongo中不起作用

时间:2017-02-06 10:09:29

标签: arrays node.js mongodb mongodb-query loopbackjs

我有以下架构的收藏模型:

{
        "id":"122HSHDJS2333222222",
        "name":"Item1",
        "image":"",
        "is_deleted":false,
        "item_blocked_on":[
            {
                "start_date":"2017-02-15T18:30:00.000Z",
                "end_date":"2017-02-24T18:30:00.000Z"
            },
            {
                "start_date":"2017-01-16T18:30:00.000Z",
                "end_date":"2017-01-26T18:30:00.000Z"
            },
        ]
    }

以上型号代表这些"项目"被阻止,因为这些开始日期结束,因此无法显示

现在在我的情况下,用户将发送" from_date"和" end_date"从客户端。 我想要的是,查询应返回" items"哪些是"可用"用于显示用户开始和结束日期。

我的查询,返回错误响应: -

{
        where:{
            and:[
                {
                    and:[
                        {
                            or:[{"item_blocked_on.start_date": {"gt": new Date(from_date)}},{"item_blocked_on.end_date": {"lt": new Date(from_date)}}],
                        },
                        {
                            or:[{"item_blocked_on.start_date": {"gt": new Date(end_date)}},{"item_blocked_on.end_date": {"lt": new Date(end_date)}}],
                        }
                    ]
                },
                {
                    "is_deleted":false
                }

            ]
        }
    };

如果我不清楚或做错事,请告诉我。

由于

1 个答案:

答案 0 :(得分:0)

根据您的要求,您可以轻松使用$ elemMatch,如示例所示。

||

希望这会有所帮助