Python 使用数组在mongodb中查找值
我试图从mongodb表中获取值,该表与python一起存储关于商店盘点日期的数据(日期存储为字符串) 存储在表中的数据:Python 使用数组在mongodb中查找值,python,mongodb,find,Python,Mongodb,Find,我试图从mongodb表中获取值,该表与python一起存储关于商店盘点日期的数据(日期存储为字符串) 存储在表中的数据: { "_id" : ObjectId("5645f0443f32df13e0dc786e"), "RequiredDate" : "28-9-2015", "Name": "xyz" } { "_id" : ObjectId("5645f0c73f32df062064a0f6"), "RequiredDate" : "29-9-201
{
"_id" : ObjectId("5645f0443f32df13e0dc786e"),
"RequiredDate" : "28-9-2015",
"Name": "xyz"
}
{
"_id" : ObjectId("5645f0c73f32df062064a0f6"),
"RequiredDate" : "29-9-2015",
"Name": "abc"
}
我想找到这两天所需产品的名称28-9-2015和29-9-2015
现在就这样单独做
db.stockdate.find({"RequiredDate": "28-9-2015"})
db.stockdate.find({"RequiredDate": "29-9-2015"})
我可以在一个查询中完成这些操作吗?是否有任何选项?
就像在一个查询中给出两个日期,并得到与两个查询相同的结果。使用运算符
db.stockdate.find({"RequiredDate": {$in: ["28-9-2015", "29-9-2015"]}})
此外,如果您只想知道产品的名称,可以使用
db.stockdate.distinct("Name", {"RequiredDate": {$in: ["28-9-2015", "29-9-2015"]}})
如果要根据日期对记录进行分组,则需要使用聚合:
db.stockdate.aggregate([
{$match: {"RequiredDate": {$in: ["28-9-2015", "29-9-2015"]}}},
{$group: {_id: "RequiredDate", Names: {$push: "$Name"}, count: {$sum: 1}}}
])
上述聚合查询将产生如下结果:
{
"_id" : "28-9-2015",
"Names": ["xyz"],
"count": 1
}
{
"_id" : "29-9-2015",
"Names": ["abc", "def"],
"count": 2
}
您可以向数组中添加任意多个日期,这将返回将reuiredDate设置为其中任何一个日期的记录。上述查询可能会有多个结果(多个日期)。是否有方法知道哪个日期进行了盘点,以便我能给出他们正在盘点的所有产品的总数?好的。为此,您需要使用聚合。给我一分钟。