码迷,mamicode.com
首页 > 数据库 > 详细

Mongo数据库基本操作

时间:2017-05-28 14:54:37      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:ups   end   add   tag   call   sort   改名   time   个数   

从这两个类的继承来看,connection是继承了MongoClient的,建议使用MongoClient而不是使用Connection。(也就是说,MongoClient可以使用方法Connection都可以使用)

from pymongo import MongoClient

client = MongoClient(192.168.40.87, 27037)
db_name = TCL_Useraction
db = client[db_name]
collection_useraction = db[useraction]

 

这里是通过字典的方式访问数据库和集合,同时你也可以通过.(点号)的方式访问

2.插入数据

save() VS insert()

mongodb的save和insert函数都可以向collection里插入数据,但两者是有两个区别:

一、save函数实际就是根据参数条件,调用了insert或update函数.如果想插入的数据对象存在,insert函数会报错,而save函数是改变原来的对象;如果想插入的对象不存在,那么它们执行相同的插入操作.这里可以用几个字来概括它们两的区别,即所谓"有则改之,无则加之".

二、insert可以一次性插入一个列表,而不用遍历,效率高, save则需要遍历列表,一个个插入。

3.更新数据

对于单个数据来说,可以更新后使用save方法

update(criteria, objNew, upsert, mult)

  • criteria: 需要被更新的条件表达式
  • objNew: 更新表达式
  • upsert: 如目标记录不存在,是否插入新文档。
  • multi: 是否更新多个文档。
collection_useraction.update({gid:last_gid, time:l_date}, 
                             {$set:{gid:last_gid}, 
                              $set:{time:l_date}, 
                              $addToSet:{categories:category_data}}, 
                             upsert=True)

4.删除数据

db.users.drop() # 删除集合

# remove(self, spec_or_id=None, safe=None, multi=True, **kwargs)
# remove() 用于删除单个或全部文档,删除后的文档无法恢复。
id = db.users.find_one({"name":"user2"})["_id"]
db.users.remove(id) # 根据 id 删除一条记录
db.users.remove() # 删除集合里的所有记录
db.users.remove({yy:5}) # 删除yy=5的记录

 

5.查询

# 查询 age 小于 15 的
for u in db.users.find({"age":{"$lt":15}}):
    print(u)

 

5.1 查询一条记录
# 查询 name 等于 user8 的
for u in db.users.find({"name":"user8"}):
    print(u)


# 获取查询的一个
u2 = db.users.find_one({"name":"user9"}) # 查不到时返回 None
    print(u2)

 

5.2 查询特定键 (fields)

特别说明
在3.0版本中,这个参数已经改名为projection,若用fields会报错

# select name, age from users where age = 21
for u in db.users.find({"age":21}, ["name", "age"]):
    print(u)
for u in db.users.find(fields = ["name", "age"]):
    print(u)

 

5.3 排序(SORT)
pymongo.ASCENDING # 也可以用 1 来代替
pymongo.DESCENDING # 也可以用 -1 来代替

for u in db.users.find().sort([("age", pymongo.ASCENDING)]):
    print(u)  # select * from 集合名 order by 键1

for u in db.users.find().sort([("age", pymongo.DESCENDING)]):
    print(u) # select * from 集合名 order by 键1 desc

for u in db.users.find().sort([("键1", pymongo.ASCENDING), ("键2", pymongo.DESCENDING)]):
    print(u) # select * from 集合名 order by 键1 asc, 键2 desc

for u in db.users.find(sort = [("键1", pymongo.ASCENDING), ("键2", pymongo.DESCENDING)]):
    print(u) # sort 的另一种写法

for u in db.users.find({"name":"user9"}, sort=[[name,1],[sex,1]], fields = ["name", "age", sex]):
    print(u) # 组合写法

 



fof项目中使用场景小例子:
import pymongo
import datetime
from pymongo import MongoClient

connection = MongoClient(localhost)
db = connection.fof
stock_cache = db.stock_cache

#post = {"20160301": "Mike","text": "My first blog post!","tags": ["mongodb", "python", "pymongo"],"date": datetime.datetime.utcnow()}
post = {date:20160302,"stocks":[001,002],ep:{001:100,002:101},market_value:{001:100m,002:101m},stock_share:{001:100s,002:101s}}
#db.stock_cache.drop()
#db.stock_cache.insert(post)
docs = db.stock_cache.find({date:20160301})

for doc in docs:
    stocks = doc.get(stocks)
    print(stocks,stocks)
    for stock in stocks:
        market_value = doc.get(market_value).get(stock)
        print(market_value,market_value)
        market_value = doc.get(stock_share).get(stock)
        print(stock_share, market_value)
#mongoCall.insert({‘name‘:‘li‘})

 

 


Mongo数据库基本操作

标签:ups   end   add   tag   call   sort   改名   time   个数   

原文地址:http://www.cnblogs.com/hdulzt/p/6915652.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!