MongoDB基本语法

连接远程MongoDB

# -*- coding:utf-8 -*-

# 连接 Mongo 数据库
from pymongo import MongoClient
from mongodb_helper import host, port, database, username, password, collection

host = host
port = port
username = username
password = password
dbname = database
collection = collection

# 建立和数据库系统的连接,创建Connection时,指定host及port参数
client = MongoClient(host, port)
# 连接目标数据库
db = client[dbname]
# 数据库用户验证
db.authenticate(username, password)
# 连接集合
col = db[collection]
# 打印集合第1条记录
print(col.find_one())

数据类型

Object ID : 文档ID
String:字符串,最常用,必须是有效的UTF-8
Boolean:存储一个布尔值,true或false
Integer:整数可以是32位,也可以是64位,取决于服务器
Double:存储浮点型数值
Arrays:数组或列表,多个值存储到一个键
Object:用于嵌入式的文档,即一个值位一个文档
Null:存储Null值
Timestamp:时间戳,表示从1970-1-1到现在的总秒数
Data:存储当前日期或时间的UNIX时间格式

查看所有的数据库

show dbs
show databases

查看当前所在的数据库名称

db

使用某个数据库

use dbname

查看集合

show collections

条件查询

查询全部文档

db.test1000.find()

查询满足条件的全部文档

查询age为18的全部文档

db.test1000.find({age:18})

“单字段满足条件”的第一条文档

查询age为18的第一条文档

db.test1000.findOne({age:18})

“单字段大于等于”条件查询

查询age大于等于18的所有文档

db.test1000.find({age:{$gte:18}})

“单字段多个等于”条件查询

查询age等于18,20,40的全部文档

db.test1000.find({age:{$in:[18,20,40]}})

“单字段多个不等于”条件查询

查询age不等于18,20,40的全部文档

db.test1000.find({age:{$nin:[18,20,40]}})

“多字段条件【且】”条件查询

多条件查询,and

db.test1000.find({age:18, name:"Tom"})

“多字段条件【或】”条件查询

多条件查询,or

db.test1000.find($or:[{age:18},{name:"Tom"}])

limit()

查询前两个

db.test1000.find().limit(2)

skip()

查询跳过前两个

db.test1000.find().skip(2)

自定义查询

自定义查询:使用$where后面写一个函数,返回满足条件的数据查询年龄大于30的学生

db.test1000.find({$where:function(){return this.age>30;}})

设置查询结果显示的字段信息

查询结果过滤:查询age大于等于15的文档,显示name字段,不显示_id字段。(只有_id字段可以设置为0,其他的不可以,不写即默认不显示)

db.test1000.find({age:{$get:15}}, {name:1, _id:0})

查询结果排序

排序方法sort(),用于对结果进行排序, 1表示升序,-1表示降序

db.test1000.find().sort({name:-1, age:1})

文档数量统计

统计个数count()方法

db.test1000.find().count()

文档数量条件统计

直接使用count()是可以加条件的,但是在find()后面使用count(条件)是不执行这个条件的

db.test1000.count({age:{$gt:18}})

指定字段去重

去重:对于某个字段进行去重

db.test1000.distinct("age")

指定字段条件去重

筛选去重

db.test1000.distinct("age", {age:{$gt:20}})

比较运算符

等于:冒号就使等于
小于$lt, less than
大于$gt, greater than
小于等于$lte, less than equal
大于等于$gte, greater than equal
不等于$ne, not equal

删除当前的数据库

切换到某个数据库时才可以使用

db.dropDatabase()

删除集合

sb.CollectionName.drop()

删除文档

语法:db.CollectionName.remove(<条件>, [{justOne:<boolean>}]),此处的布尔值默认为false
只删除一条,必须使布尔值为true

db.test1000.remove({name:"Tom"}, {justOne:true})

全部删除,不必加justOne条件,justOne默认为false

db.test1000.remove({name:"Tom"})

创建数据库

无需创建数据库,直接使用就会切换到这个数据库,插入数据时会创建这个数据库,否则不创建。

use dbname

创建集合+插入数据

向不存在的集合中第一次插入数据时,集合会自动创建出来。也可手动创建集合。
insert()方法会自动生成一个_id,待插入文档也可自带_id,如果自带的_id已存在,则插入失败。_id是做为唯一标识符存在的,不可重复。

db.test1000.insert({"name":"xiaoming", "age":10})

键可以不加引号

db.test1000.insert(name:"Tom", age:18)

save()方法,如果文档的_id已经存在则覆盖(更新)之前的文档内容,如果不存在则添加。

db.test1000.save(name:"Jack", age:16)

db.test1000.update(<条件>,<更新内容>,[multi:true])

更新文档的全部内容(替换)

这条语句会找到满足条件的第一条{name:"Tom"}的文档,然后将这条文档更新为后面的更新内容{name:"TOM"}

db.test1000.update({name:"Tom"}, {name:"TOM"})

更新文档的指定内容(更新)

这条语句会找到满足条件的第一条{name:"Tom"}的文档,然后把文档中的name字段修改为TOM,其他字段不做处理。

db.test1000.update({name:"Tom"}, $set:{name:"TOM"})

更新文档的多条指定内容(更新)

multi只在与$搭配时才生效。找到满足条件{name:"Tom"}的全部文档,并更新其中的name字段为TOM

db.test1000.update({name:"Tom"}, $set:{name:"TOM"}, {multi:true})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值