Mongodb 命令及 PyMongo 库的使用
1. PyMongo
import pymongo
1. 初始化 Mongo 客户端
client=pymongo.MongoClient(mongodb://10.85.39.45:8188,10.85.39.43:8188,10.85.39.31:8188,10.85.39.32:8188,10.85.39.33:8188,10.85.39.34:8188,10.85.32.16:8188,10.85.32.33:8188,10.85.39.35:8188,10.85.39.27:8188)
2. 初始化数据库
mongo_database = client[db_name]
3. 初始化表(聚集、集合)
stat_tbl = mongo_database[stat_tbl_name]
4. 在表中按照键值查找数据
start_time_doc = stat_tbl.find_one({'keyword': keyword_name})
start_time_doc下可能还有二级键值,需要用start_time_doc['start_time']访问
5. 在表中更新数据
stat_tbl.update({'keyword': keyword_name}, {'$set': {'start_time': timestamp}})
6. 查看 mongodb 客户端中数据库和聚集的名字
client.database_names()
db.collection_names()
7. 查看聚集中一条记录
db.Account.find_one({"UserName":"keyword"})
在这里db.Account与db['Account']作用相同,都是表示数据库中的一个聚集
8. 查看聚集的多条记录
for item in db.Account.find():
item
9. 查询语法详解 db.collection.find(query, projection)
查询条件由 query 参数传入,为字典类型。不同的查询条件用 ',' 隔开表示查询条件的 AND,查询的字段和具体值用字典的 key/value 来表示。比如:
db.col.find({key1: value1, key2: value2}) 查询聚集中 key1 为 value1,同时 key2 为 value2 两个条件成立的记录。
另外,使用操作符可以指定查询条件,格式为:
{key1: {operator: value}})
这些操作符包括,详细见:https://docs.mongodb.com/manual/reference/operator/query/
$eq:与某个值相等
$gt:大于某个值
$gte:大于等于某个值
$in:为数组中的某个值
$lt:小于某个值
$lte:小于等于某个值
$ne:不等于某个值
$nin:不在数组的列表中
$and 和 $or 为特殊的逻辑运算符其用法如下,条件写在列表里:
{$or: [{key1: value1, key2: value2}]}
举例:table.find({"saveTime": {"$gte": 1501516800}, "bjh_ext.ext_info.feed_ext_info.source_id": {"$in": [3000084, 3000085, 3000086]}})
上述查询语句用于在table里查找"saveTime"值大于等于1501516800即某个时刻之后的,且bjh_ext.ext_info.feed_ext_info.source_id值在列表给出范围内的记录。'.' 运算符用于在嵌入式的文档中查询,表示多级键值。
参考:http://www.cnblogs.com/zhouxuchen/p/5544227.html
2. MongoDB
其他:
1. 存在 MongoDB 中的数据会自动加上一个 '__id' 字段,值为该条记录的对象,在对数据进行解析时,需要先将该字段删除。
2. 较大的数据类型会存为 BSON.int64.int64 类型,为数据库独有的类型,将读出来的数据转换为其他格式比如 marshal 时,需要先将这个字段的值转换为 int 类型。