mongodb基础

mongodb

    mongodb 属于NoSql 数据库,与关系型数据库大不同,对比mysql进行学习

SQLMONGO说明
databasedb数据库
tablecollection数据库表/ 集合
rowdocument数据行/ 文档
columnfield数据字段/ 域
indexindex索引
primary keyprimary key主键,mongo 自动将_id 字段设置为主键

 

MongoDB 常见数据类型

创建删除(数据库)

MongoDb 中的collection 和 数据库都是惰性创建的,在插入第一个文档后,才会创建

use python (如果不存在,则创建。 )

show dbs 

db.python.insert({'url': 'www.google.com'})

db.dropDatabase()

 

增山改查

增加

MongoDB 使用insert() 或 save() 方法插入数据

db.COLLECTION_NAME.insert()

> db.python.insert({title: 'python', likes: 100})
WriteResult({ "nInserted" : 1 })

 

查找

db.COLLECTION_NAME.find()

db.COLLECTION_NAME.find().pretty()

条件语句和操作符

find()方法可以传入多个键,实现and条件

db. COLLECTION_NAME.find({key1:value1, key2:value2}).pretty()

> db.python.find({'likes':{$gte:100}, 'title':'python'}).pretty()
{
	"_id" : ObjectId("5977eee9176609dfd3e4f6eb"),
	"title" : "python",
	"likes" : 100
}

实现or条件

db.COLLECTION_NAME.find(
{
    $or: [
        {key1: value1}, {key2:value2}
    ]
}
).pretty()

> db.python.find({$or:[{'likes':{$gte:100}},{'title': 'python'}]})
{ "_id" : ObjectId("5977eee9176609dfd3e4f6eb"), "title" : "python", "likes" : 100 }

更新文档

update

db.collection.update(
        query,
        update,
        {
            upsert: boolean
            multi: boolean
            writeConcern: document
        }
)

  • query:  update 查询的条件
  • update: update的对象和一些更新操作符
  • upsert: 如果不存在update的记录,true插入,默认false
  • multi: 默认false, 更新第一条记录,true更新符合条件的多条记录
  • writeConcern:      抛出异常级别
> db.python.update({'title': 'python'}, {$set: {'title': 'python爬虫'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

save

通过传入的文档替换已有的文档

db.collection.save(

    document,

    {

        writeConcern: document

    }

)

> db.python.save({
... 'title': 'monogodb',
... 'likes': 100
... })
WriteResult({ "nInserted" : 1 })

 

删除

db.collection.remove(
        query,
        {
            justOne: boolean,
            writeConcern: document
        }

  • query 删除条件
  • justOne  可选,如果设置为True,删除一个文档
> db.python.remove({'likes':{$gte:100}})

 

python操作MongoDB

pip install pymongo

建立连接

常见的三种形式

  • client=pymongo.MongoClient()
  • client=pymongo.MongoClient(’localhost‘,27017)
  • client=pymongo.MongoClient(’mongodb://localhost:27017/‘)

获取数据库

db = client.pySpider

db = client['pySpider']

获取集合(表)

collection = db.python

collection = db['python']

 

增删改查

增加

>>> book = {'author':'Tom', 'text': 'hello world'}
>>> collection = db.python
>>> book_id = collection.insert(book)
>>> book_id
ObjectId('597806dde9856319a976ca6a')

批量插入

>>> books = [{"author": "Mike",
... "text": "My first book!",
... "tags": ["爬虫", "python", "网络"],
... "date": datetime.datetime.utcnow()
... },{"author": "qiye",
... "text": "My sec book!",
... "tags": ["hack", "python", "渗透"],
... "date": datetime.datetime.utcnow()
... }]
>>> books_id = collection.insert(books)
>>> books_id
[ObjectId('5978076ee9856319a976ca6b'), ObjectId('5978076ee9856319a976ca6c')]

查询

find_one() 没有匹配返回None

>>> collection.find_one({'author': 'Mike'})
{'text': 'My first book!', 'author': 'Mike', 'date': datetime.datetime(2017, 7, 26, 3, 7, 5, 111000), '_id': ObjectId('5978076ee9856319a976ca6b'), 'tags': ['爬虫', 'python', '网络']}

多条查询

也可以传入限制查询条件

>>> for book in collection.find():
...     print(book)

查询符合条件的文档数量

>>> collection.find().count()
3

 

修改

>>> collection.update({'author':'Tom'}, {"$set":{"text": "python book"}})
{'ok': 1, 'nModified': 1, 'updatedExisting': True, 'n': 1}

 

删除

>>> collection.remove({"author":"Tom"})
{'ok': 1, 'n': 1}

 

转载于:https://my.oschina.net/acutesun/blog/1488730

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值