1.1 创建db
>use db_name
1.2 展示db
>show databases
1.3 删除db
>db.dropDatabase()
1.4 创建集合
>db.createCollection(name, options)
1.5 删除集合
>db.COLLECTION_NAME.drop()
1.6 集合计数
>db.COLLECTION_NAME.count()
1.7 重命名集合
>db.COLLECTION_NAME.renameCollection("NEW_NAME")
1.8 展示集合
>show collections
1.9 清空集合
>db.COLLECTION_NAME.remove({})
1.10 创建索引
>db.COLLECTION_NAME.ensureIndex(keys[,options])//createIndex
- unique bool 是否唯一
- name 索引名
- dropDups bool 是否删除重复记录
- sparse 不存在的字段数据不启用索引
- background 建索引过程会阻塞其它数据库操作
1.11 展示索引
>db.COLLECTION_NAME.getIndexes()
1.12 删除索引
>db.COLLECTION_NAME.dropIndex("INDEX-NAME")
1.13 清空索引
>db.COLLECTION_NAME.dropIndex()
2.1 排序
>db.collection_name.find().sort({KEY:1})
1正序;-1倒序
2.2 集合查询
使用$in或$nin
>db.collection_name.find({"id":{$in:[123,4,56]}}).sort({"price":1})
2.3 正则表达式
var keywords = ["xd", "sd", "ad"],
regex = keywords.join("|");
db.collection_name.find({
"category": {
"$regex": regex,
"$options": "i"
}
});
设置 $options 为 $i ,不区分大小写
>db.collection_name.find({KEY:{$regex:"PARTEN"}})
等价于
>db.collection_name.find({KEY:/PARTEN/})
2.4 比较
- $gt:大于
- $lt:小于
- $gte:大于或等于
- $lte:小于或等于
- $eq =
- $ne !=
>db.collection.find({ "field" : { $gt: value } } );
2.5 条件与或
$or
>db.collection.find({$or: [{"field" : { $gt: value }, "field" : { $lt: value }}]});
与使用并写即可
>db.collection.find({"field" : { $gt: value }, "field" : { $lt: value }});
2.6 键
$exists 判断是否存储KEY
//判断不为空
db.COL.find({"id":{"$ne":null}})
db.COL.find({"id":{"$exists":true}})
$size KEY的长度
3.1 更新
使用$set更新指定字段,否则覆盖更新
4.1 分页
使用sort,skip和limit三者结合实现;即:
>db.collection.find({field:value}).sort({id:1}).skip(offset).limit(size)
4.2 最大值
使用sort逆序,然后limit(1)
4.3 最小值
使用sort正序,然后limit(1)
Golang
5.1 所有{}都需要使用bson.M{}替换
func f() {
sel := bson.M{"name": *(req.Name)}
sel["$or"] = []bson.M{bson.M{"star": bson.M{"$gte": *req.Star}}, bson.M{"comment_grade": bson.M{"$gte": req.Star}}}
fields := bson.M{"scenic_id": 1,
"name": 1,
"address": 1,
"star": 1,
"price": 1,
"image_url": 1}
sort := bson.M{"price": -1, "star": -1}
col := newSess.DB(DB_NAME).C(COLLECTION)
err := col.Find(sel).Select(fields).Sort(sort).Limit(SIZE).All(&hotel)
//...
}