mongodb基础
博客专区 > acutesun 的博客 > 博客详情
mongodb基础
acutesun 发表于9个月前
mongodb基础
  • 发表于 9个月前
  • 阅读 0
  • 收藏 0
  • 点赞 0
  • 评论 0

【腾讯云】新注册用户域名抢购1元起>>>   

mongodb

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

SQL MONGO 说明
database db 数据库
table collection 数据库表/ 集合
row document 数据行/ 文档
column field 数据字段/ 域
index index 索引
primary key primary 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}

 

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 65
码字总数 83152
×
acutesun
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: