Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 需要使用Mongo DB找出给定日期的值_Python_Mongodb_Mongodb Query_Aggregation Framework_Pymongo - Fatal编程技术网

Python 需要使用Mongo DB找出给定日期的值

Python 需要使用Mongo DB找出给定日期的值,python,mongodb,mongodb-query,aggregation-framework,pymongo,Python,Mongodb,Mongodb Query,Aggregation Framework,Pymongo,假设上面是数据库中我可用的模式。 目标:对于给定的日期,找出attribute1和attribute2的值,如果它与我要查找的内容相匹配,则将其计算在内,否则不计算在内。 请注意,eventH是一个数组,其中包含随时间变化的属性值 例如:从2020年3月5日起,给我提供attribute1=value1和attribute2=value2的文档 我想直接在Mongodb进行处理。虽然我可以使用pandas进行处理,但是对于更大的数据集和更大的eventH对象,会有延迟。如果我错了,请纠正我 日期

假设上面是数据库中我可用的模式。 目标:对于给定的日期,找出attribute1和attribute2的值,如果它与我要查找的内容相匹配,则将其计算在内,否则不计算在内。 请注意,eventH是一个数组,其中包含随时间变化的属性值

例如:从2020年3月5日起,给我提供attribute1=value1和attribute2=value2的文档 我想直接在Mongodb进行处理。虽然我可以使用pandas进行处理,但是对于更大的数据集和更大的eventH对象,会有延迟。如果我错了,请纠正我

日期可以是2020年3月29日ex的任何值,id-1的最后一个值将是2020年3月5日的值。 或 id-1在2020年2月27日的值将与2020年2月20日的值相同,因为在2020年2月20日之后,该值在2020年2月28日发生了变化,因此如果我查询2020年2月28日的值,它应给出截至该日期的值



我想下面的查询就是您要找的

{
_id:"id-1",
createdDate:new Date("2020-01-01"),
"eventH":[{
    date: new Date("2020-01-01"),
    attribute1: value,
    attribute2: "value"
},
{
    date: new Date("2020-02-01"),
    attribute1:value,
    attribute2:"value"
},
{
    date: new Date("2020-02-20"),
    attribute1:value,
    attribute2:"value"
},
{
    date: new Date("2020-02-28"),
    attribute1:value,
    attribute1:"value"
},
{
    date: new Date("2020-03-05"),
    attribute1: value,
    attribute2:"value"
}]
},
{
_id:"id-2",
createdDate:new Date("2020-01-02"),
eventH:[{
    date: new Date("2020-01-02"),
    attribute1: value,
    attribute2: "value"
},
{
    date: new Date("2020-02-01"),
    attribute1:value,
    attribute2:"value"
},
{
    date: new Date("2020-02-20"),
    attribute1:value,
    attribute2:"value"
},
{
    date: new Date("2020-02-28"),
    attribute1:value,
    attribute2:"value"
},
{
    date: new Date("2020-03-05"),
    attribute1: value,
    attribute2:"value"
}]
},
{
_id:"id-3",
createdDate:new Date("2020-01-02"),
eventH:[{
    date: new Date("2020-01-02"),
    attribute1: value,
    attribute2: "value"
},
{
    date: new Date("2020-02-01"),
    attribute1:value,
    attribute2:"value"
},
{
    date: new Date("2020-02-20"),
    attribute1:value,
    attribute2:"value"
},
{
    date: new Date("2020-02-28"),
    attribute1:value,
    attribute2:"value"
},
{
    date: new Date("2020-03-05"),
    attribute1: value,
    attribute2:"value"
}]
},
{
_id:"id-4",
createdDate:new Date("2020-01-02"),
eventH:[{
    date: new Date("2020-01-02"),
    attribute1: value,
    attribute2: "value"
},
{
    date: new Date("2020-02-01"),
    attribute1:value,
    attribute2:"value"
},
{
    date: new Date("2020-02-20"),
    attribute1:value,
    attribute2:"value"
},
{
    date: new Date("2020-02-28"),
    attribute1: value,
    attribute2: "value"
},
{
    date: new Date("2020-03-05"),
    attribute1: value,
    attribute2:"value"
}]
}

这只是一个需求列表,您是否有具体的技术问题?请看,@AMC:这不是要求列表。这只是一个问题陈述。虽然在pandas中,我已经使用df实现了这个功能,但是我试图在mongodb上实现同样的功能。不太了解聚合管道和map reduce函数。如果你能帮我一个小提示,那就太好了。谢谢你的回复。这将有助于我汇总db for ex中日期的数据,它将为日期=新日期(“2020-01-02”)的元素提供数据。假设日期为“2020-01-02”,一些属性值发生了变化,并记录为事件H的一部分。属性值的新变化发生在2020-01-06。在那之后,下一个变化发生在2020年1月31日。我的目的是编写一个查询,如果我查询2020-01-03或2020-01-05:该值应与2020-01-02的值相同,因为在1月2日之后,该值在1月6日发生变化2020@BatScream你能帮忙吗?
db.test2.aggregate([
    {
        "$project": {
            "eventH": {
                "$filter": {
                    "input": "$eventH",
                    "as": "arrayElem",
                    "cond": {
                        "$and": [
                            {"$eq": ["$$arrayElem.date", ISODate("2020-01-02T05:30:00.000+05:30")]},
                            {"$eq": ["$$arrayElem.attribute1", "value"]},
                            {"$eq": ["$$arrayElem.attribute2", "value"]},
                        ]
                    }
                }
            }
        }
    },
    {
        "$match": {
            "eventH": {"$ne": []}
        }
    }
])