Python pymongo在聚合查询中包含javascript
我目前的任务是研究数据库,并尝试使用pymongo库进行各种查询,以调查给定项目的适用性 我的时间戳以毫秒整数格式保存,我想做一个简单的按日销售汇总查询。我从中了解到,由于时间戳不是以BSON格式上传的,我不能使用日期和时间函数来创建BIN,但可以使用嵌入式javascript操作时间戳 因此,我编写了以下查询:Python pymongo在聚合查询中包含javascript,python,mongodb,pymongo,Python,Mongodb,Pymongo,我目前的任务是研究数据库,并尝试使用pymongo库进行各种查询,以调查给定项目的适用性 我的时间戳以毫秒整数格式保存,我想做一个简单的按日销售汇总查询。我从中了解到,由于时间戳不是以BSON格式上传的,我不能使用日期和时间函数来创建BIN,但可以使用嵌入式javascript操作时间戳 因此,我编写了以下查询: [{ "$project": { "year": { "$year": { "$add": ["new
[{
"$project": {
"year": {
"$year": {
"$add": ["new Date(0)", "$data.horaContacto"]
}
},
"month": {
"$month": {
"$add": ["new Date(0)", "$data.horaContacto"]
}
}
}
}, {
"$group": {
"_id": {
"year": "$year",
"month": "$month"
},
"sales": {
"$sum": {
"$cond": ["$data.estadoVenta", 1, 0]
}
}
}
}]
但是得到这个错误:
pymongo.errors.OperationFailure: exception: $add only supports numeric or date types, not String
我认为发生的是,js“newdate(0)”
被mongo驱动程序解释为字符串,而不是应用为js。如果我删除了封装的倒双引号,那么Python将尝试相应地解释此代码和错误。这只是一个示例,我希望在未来的测试中在查询中包含更多的js,但无法找到一种方法使其与Python配合使用(尽管如此,我对Python也相当陌生)
是否有人知道:
- 我正确地假设发生错误是因为mongo解释 JS作为字符串并尝试直接求和李>
- 如果我能指示 mongo这是来自Python的JS,Python没有试图解释 密码
MongoDB聚合框架不能使用任何Javascript。必须使用BSON指定聚合管道中的所有数据。PyMongo可以将标准Python datetime转换为BSON,您可以将其作为聚合管道的一部分发送,如下所示:
import datetime
epoch = datetime.datetime.fromtimestamp(0)
pipeline = [{
"$project": {
"year": {
"$year": {
"$add": [epoch, "$data.horaContacto"]
}
},
# the rest of your pipeline here ....
}
}]
cursor = db.collection.aggregate(pipeline)
MongoDB聚合框架不能使用任何Javascript。必须使用BSON指定聚合管道中的所有数据。PyMongo可以将标准Python datetime转换为BSON,您可以将其作为聚合管道的一部分发送,如下所示:
import datetime
epoch = datetime.datetime.fromtimestamp(0)
pipeline = [{
"$project": {
"year": {
"$year": {
"$add": [epoch, "$data.horaContacto"]
}
},
# the rest of your pipeline here ....
}
}]
cursor = db.collection.aggregate(pipeline)
谢谢A.Jesse Jiryu Davis,工作过,我知道没有。唯一需要做的调整是包括导入pytz和调整epoch,例如,
epoch=datetime.datetime.fromtimestamp(0,pytz.utc)
谢谢A.Jesse Jiryu Davis,工作了,我知道没有。唯一需要的调整是包括导入pytz和调整epoch,例如epoch=datetime.datetime.fromtimestamp(0,pytz.utc)