python - 使用数组在 mongodb 中查找值

标签 python mongodb find

我正在尝试从 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"})

我可以在单个查询中执行这些操作吗?有什么选择吗? 就像在单个查询中给出两个日期并获得与两个查询相同的结果。

最佳答案

使用$in运算符。

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 设置为任何这些日期的记录。

关于python - 使用数组在 mongodb 中查找值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33708704/

相关文章:

c# - 如何在 DataGridView 中创建类似 excel 的搜索?

jQuery 的多重选择器 + find() 与 Children()

python - OpenCV 的 Python ORB 模块的掩码格式是什么?

python - 为什么 ConfigParser items() 给出原始字符串,而 get() 返回 bool/float/等?

python - 每次迭代只产生一次

集合中所有(特定)数组的元素的 mongodb 聚合总和

authentication - 如何使用用户名和密码保护 MongoDB

mysql - 关系型 Json 数据库?

command-line - 在 Mavericks 上运行 find 和 sed 后 sed 出现 "invalid command code ."错误

python - 在不更改目录的情况下写入 Python 中的新目录