参考文档:https://flask-pymongo.readthedocs.io/en/latest/
初始化设置:
from flask import Flask
from flask_pymongo import PyMongo
app = Flask(__name__)
app.config["MONGO_URI"] = "mongodb://localhost:27017/myDatabase"
mongo = PyMongo(app)
查询:
mongo.db.users.find({"online": True})
user = mongo.db.users.find_one_or_404({"_id": username})
collection.find({"_id": bson.ObjectId(strategy_id)}).next()
mongo.cx['chance_result'][_id].find({"type": "stock_data"})
## 第一个[]是数据库,第二个[]是集合,使用 .find里面的条件去查找一条符合需求的文档
更新:
collection.update({"_id": bson.ObjectId(strategy_id)}, {"$set": kwargs})
coll.update({"_id": bson.ObjectId(strategy_id)}, update, upsert=upsert)
删除:
collection.delete_one({"_id": bson.ObjectId(strategy_id)})
collection.delete_many({"_id": bson.ObjectId(strategy_id)}) # 删除一条数据
插入:
strategy_id = collection.insert(args) # 插入一条新的数据
关键字查询:
snap = {} # 查询的字段设置
if like:
# FIXME: regex 很耗性能,比较好的解决办法?
strategies = collection.find({
"user_id": user_id,
"name": {"$regex": f".*{like}.*"},
# "profit": {"$type": "number"} 没回测的策略也显示
}).sort("create_time", -1)
else:
strategies = collection.find({"user_id": user_id}, cls.snap)
封装:
>>> type(mongo.cx)
<type 'flask_pymongo.wrappers.MongoClient'>
>>> type(mongo.db)
<type 'flask_pymongo.wrappers.Database'>
>>> type(mongo.db.some_collection)
<type 'flask_pymongo.wrappers.Collection'>