数据库中的 Pymongo 计算
Pymongo calculation within database
我的目标:
计算:
"open" * 1.1
在pymongo输出数据之前,因为我认为它会更快
数据如下所示:
{
"_id": "000016.XSHE_2020-01-02-09-32",
"order_book_id": "000016.XSHE",
"datetime": {
"$date": "2020-01-02T09:32:00.000Z"
},
"num_trades": 0,
"low": 4.3131,
"close": 4.3228,
"high": 4.3326,
"total_turnover": 2826041,
"volume": 639124,
"open": 4.3228
}
{
"_id": "000016.XSHE_2020-01-02-09-33",
"order_book_id": "000016.XSHE",
"datetime": {
"$date": "2020-01-02T09:33:00.000Z"
},
"num_trades": 0,
"low": 4.3131,
"close": 4.3228,
"high": 4.3326,
"total_turnover": 1087488,
"volume": 246300,
"open": 4.3131
}....
我正在尝试以下代码,但 none 有效:
tdcursor = MinutesDB.find({"order_book_id": "000016.XSHE", "datetime": {"$gte": recent11TradingDays[-1]},
"uplimit":{"$multiply":{"open": 1.1}}},
{"_id": 0, "order_book_id":1, "datetime": 1, "open": 1, "close": 1})
datadf = pd.DataFrame(tdcursor)
或
multiply = MinutesDB.aggregate([
{"$group":
{"order_book_id": "000016.XSHE",
"uplimit": {"$multiply": ["$open", 1.1]}
}
}
])
datadf = pd.DataFrame(multiply)
上面的代码给出如下错误:
pymongo.errors.OperationFailure: The $in accumulator is a unary operator, full error: {'ok': 0.0, 'errmsg': 'The $in accumulator is a unary operator', 'code': 40237, 'codeName': 'Location40237'}
感谢您的帮助!
这里有一个聚合的解决方案
db.collection.aggregate([
{
"$match": {
"order_book_id": "000016.XSHE",
}
},
{
"$project": {
"uplimit": {
"$multiply": [
"$open",
1.1
]
}
}
}
])
由于您只想查询匹配的文档:order_book_id": "000016.XSHE
,您将需要 $match
聚合阶段
然后$project
使用$multiply
试一试here
我的目标:
计算:
"open" * 1.1
在pymongo输出数据之前,因为我认为它会更快
数据如下所示:
{
"_id": "000016.XSHE_2020-01-02-09-32",
"order_book_id": "000016.XSHE",
"datetime": {
"$date": "2020-01-02T09:32:00.000Z"
},
"num_trades": 0,
"low": 4.3131,
"close": 4.3228,
"high": 4.3326,
"total_turnover": 2826041,
"volume": 639124,
"open": 4.3228
}
{
"_id": "000016.XSHE_2020-01-02-09-33",
"order_book_id": "000016.XSHE",
"datetime": {
"$date": "2020-01-02T09:33:00.000Z"
},
"num_trades": 0,
"low": 4.3131,
"close": 4.3228,
"high": 4.3326,
"total_turnover": 1087488,
"volume": 246300,
"open": 4.3131
}....
我正在尝试以下代码,但 none 有效:
tdcursor = MinutesDB.find({"order_book_id": "000016.XSHE", "datetime": {"$gte": recent11TradingDays[-1]},
"uplimit":{"$multiply":{"open": 1.1}}},
{"_id": 0, "order_book_id":1, "datetime": 1, "open": 1, "close": 1})
datadf = pd.DataFrame(tdcursor)
或
multiply = MinutesDB.aggregate([
{"$group":
{"order_book_id": "000016.XSHE",
"uplimit": {"$multiply": ["$open", 1.1]}
}
}
])
datadf = pd.DataFrame(multiply)
上面的代码给出如下错误:
pymongo.errors.OperationFailure: The $in accumulator is a unary operator, full error: {'ok': 0.0, 'errmsg': 'The $in accumulator is a unary operator', 'code': 40237, 'codeName': 'Location40237'}
感谢您的帮助!
这里有一个聚合的解决方案
db.collection.aggregate([
{
"$match": {
"order_book_id": "000016.XSHE",
}
},
{
"$project": {
"uplimit": {
"$multiply": [
"$open",
1.1
]
}
}
}
])
由于您只想查询匹配的文档:order_book_id": "000016.XSHE
,您将需要 $match
聚合阶段
然后$project
使用$multiply
试一试here