由于需要在页面展示MongoDB库里的数据,所以考虑使用python操作MongoDB,PyMongo模块是Python对MongoDB操作的接口包,所以首页安装pymongo。
1、安装命令
1
|
pip install pymongo
|
2、查询命令:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
import pymongo
# 创建连接
client = pymongo.MongoClient(host = "10.0.2.38" , port = 27017 )
# 连接probeb库
db = client[ 'probeb' ]
# 打印库中所有集合名称
print (db.collection_names())
# 连接到test1这个集合
collection = db.test1
# 这条命令是查找rssi大于srssi小于erssi,stime大于stime,小于etime的数据以stime倒叙排列
sumdata = collection.find({ "RSSI" : { "$gt" : int (srssi), "$lt" : int (erssi)}, "stime" : { "$gt" : stime, "$lt" : etime}}).sort([( 'stime' , - 1 )])
#这条命令是查找rssi大于srssi小于erssi,stime大于stime小于etime 且mac等于search或者dmac等于search(search是个变量, "$options":"i"是为了不区分search内容的大小写)的数据,以stime倒叙排列
sumdata = collection.find({ "RSSI" : { "$gt" : int (srssi), "$lt" : int (erssi)}, "stime" : { "$gt" : stime, "$lt" : etime}, "$or" : [{ "mac" : { "$regex" : search, "$options" : "i" }}, { "dmac" : { "$regex" : search, "$options" : "i" }}]}).sort([( 'stime' , - 1 )])
# 现在查询的结果赋值给sumdata,如果想查出具体数据,可以使用for循环
for data in sumdata:
print (data)
# 注意:在使用python操作MongoDB进行排序的时候,不能使用db.test1.find().sort({"name" : 1, "age" : 1})
# 否则会遇到如下异常:
# TypeError: if no direction is specified, key_or_list must be an instance of list
# 解决方法:
# db.tes1t.find().sort([("name", 1), ("age" , 1)])
# 原因:在python中只能使用列表进行排序,不能使用字典
|
3、插入数据
import datetime
1
2
3
4
5
6
|
# 插入数据
account = { "AccountID" : 1 , "UserName" : "libing" , 'date' :datetime.datetime.now()}
accounts = [{ "AccountID" : 2 , "UserName" : "liuw" , 'date' :datetime.datetime.now()},
{ "AccountID" : 3 , "UserName" : "urling" , 'date' :datetime.datetime.now()}] #每条记录插入时间都
collections.insert(account)
|
4、总而言之,python操作MongoDB和MongoDB的命令操作大同小异。只要熟练使用MongoDB的命令操作,那么用pymongo操作就不是问题。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
原文链接:https://my.oschina.net/zhangyangyang/blog/759711