使用数组在mongodb中查找值

2024-06-16 09:52:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从mongodb表中获取值,该表与python一起存储关于商店中盘点日期的数据(日期存储为字符串)。你知道吗

表中存储的数据:

{
    "_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"})

我可以在一个查询中完成这些操作吗,有没有其他选项? 就像在一个查询中给出两个日期,得到的结果与我在两个查询中得到的结果相同。你知道吗


Tags: 数据字符串nameiddb产品mongodbfind
1条回答
网友
1楼 · 发布于 2024-06-16 09:52:39

使用^{}运算符。你知道吗

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设置为其中任何一个日期的记录。你知道吗

相关问题 更多 >