mongodb常用操作

insert插入数据
操作格式:
db.集合.insertOne(<JSONa对象>)
db.集合.insertMany([<JSON1>,<JSON 2>......])

示例:
db.fruit.insertOne({"name":"apple"})
db.fruit.insertMany([
{name:"apple"},
{name:"pear"}.
{name:"orange"}
])

使用find查询文档
find是mongodb中查询数据的基本指令,相当于SQL中的select。
find返回的是游标

find示例:
db.movies.find({"year":1975}) 单条件查询
db.movies.find({"year":1975,"title":"batman"}) 多条件and查询
db.movies.find({$and:[{"title":"batman"},{"category":"action"}]}) // and的另一种形式
db.movies.find({$or:[{"year":"1989"},{"title":"batman"}]})
db.movies.find({"title":/^B/}) 按正则表达式查找

使用remove删除文档
1. 使用remove命令需要配合查询条件使用
2. 匹配到查询条件的文档会被删除
3. 指定一个空文档条件会删除所有文档

示例:
1. db.test.remove({a:1}) // 删除a等于1的记录
2. db.test.remove({a:{$lt:5}}) // 删除a小于5的记录
3. db.test.remove({}) // 删除所有记录
4. db.test.remove() // 报错

使用update更新文档
update操作格式:db.集合.update(<查询条件>,<更新字段>)
以以下数据为例:
db.fruit.insertMany([
{"name":"apple"},
{"name":"pear"},
{"name":"orange"}
])

db.fruit.updateOne({"name":"apple"},{$set:{from:"china"}})
updateOne 无论条件匹配多少条记录,始终只更新第一条
updateMany 条件匹配多少条就更新多少条

聚合运算
pipeline = [$stage1,$stage2,$stage3,......$stateN];
db.collection.aggregate(pipeline,{ options })

常用管道符:
$project 增加、删除、重命名字段
$match 条件匹配,只 有满足条件的文档才能进入下一阶段
$limit 限制结果的数量
$skip 跳过文档的数量
$sort 条件排序
$group 条件组合结果,排序
$lookup 用于引入其它集合的数据

sql和nosql对比

where $match
group by $group
having $math
select $project
order by $sort
limit $limit
sum $sum
count $sum
join $lookup


示例:
db.order.aggregate(
[
{
$project:{order_id:1,all_price:1}
},
{
$match:{"all_price":{$gte:90}}
}
]
)


db.order.aggregate(
[
{
"$sort":{"all_price":-1}
}
]
)

 

索引基础:
1. 创建索引
db.user.ensureIndex({"username":1})
2. 获取当前聚合的索引
db.user.getIndex()
3. 删除索引
db.user.dropIndex({"username":1})

复合索引

posted @ 2024-11-28 09:05  羊脂玉净瓶  阅读(12)  评论(0)    收藏  举报