我有一个日期列表,我正在执行 $regex
来查找这些值,但我只想显示查询的值。
集合中存储的数据:
{
"Pid" : "5652f92761be0b14889d9854",
"Registration" : "TN 56 HD 6766",
"Booked" : [
"1-10-2015",
"6-10-2015",
"11-12-2015",
"16-12-2015",
"10-12-2015"
],
"Vid" : "56543ed261be0b0a60a896c9"
}
我是这样搜索的
db.calendar2.find({"Pid" : "5652f92761be0b14889d9854","Registration" : "TN 56 HD 6766","Booked" : {"$regex": "10-2015"}})
来 self 的 python 程序。
我得到的输出。
{
"Pid" : "5652f92761be0b14889d9854",
"Registration" : "TN 56 HD 6766",
"Booked" : [
"1-10-2015",
"6-10-2015",
"11-12-2015",
"16-12-2015",
"10-12-2015"
],
"Vid" : "56543ed261be0b0a60a896c9"
}
期望的输出
{
"Pid" : "5652f92761be0b14889d9854",
"Registration" : "TN 56 HD 6766",
"Booked" : [
"1-10-2015",
"6-10-2015"
],
"Vid" : "56543ed261be0b0a60a896c9"
}
谁能指导我
编辑 我已经尝试过,但没有得到输出,我只想显示与正则表达式条件匹配的特定日期集
最佳答案
这是使用聚合框架实现您想要的目标的一种方法:
-展开 Booked 数组
-匹配你想要的文档(以及已经展开的数组元素)
-通过过滤器将结果重新组合在一起,并将展开的数组元素推回 Booked
-投影结果以从组对象中解压缩值
db.calendar2.aggregate([{
$unwind: "$Booked"
}, {
$match: {
"Pid": "5652f92761be0b14889d9854",
"Registration": "TN 56 HD 6766",
"Vid": "56543ed261be0b0a60a896c9",
"Booked": /10-2015/
}
}, {
$group: {
_id: {
Pid: "$Pid",
Registration: "$Registration",
Vid: "$Vid"
},
Booked: {
$push: "$Booked"
}
}
}, {
$project: {
Pid: "$_id.Pid",
Registration: "$_id.Registration",
Vid: "$_id.Vid",
Booked: 1,
_id: 0
}
}]);
关于python - mongodb 仅显示列表中的特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34329729/