学习网站
创建数据库
use DATABASE_NAME
当没有任何数据时show dbs
无法查看到
创建集合
db.createCollection("user_info")
使用show collections
查看集合
删除集合
db.collection.drop()
Robo3T操作
// 根据条件删除
db.getCollection('testEntity').remove({"_id" : ObjectId("645510f187330a37dc844055")})
// 添加一条数据
db.getCollection('testEntity').insert({"_id" : ObjectId("645510f187330a37dc844055")})
批量修改
db.getCollection('sw_school').update(
{'app_no':"7"}, //query
{$set:{'createDate': ISODate("2021-04-12T11:16:22.098+08:00")}},// update
{multi:true,upsert:false} // 批量更新
)
模糊查询
criteria.and("name").regex(name);
db.getCollection('news_v2').find({"title" : {"$regex":"如果"}})
索引
查看索引
db.col.getIndexes()
创建索引
db.col.createIndex({"title":1})
db.col.createIndex({"title":1,"description":-1})
语法中 Key 值为你要创建的索引字段,1 为指定按升序创建索引,如果你想按降序来创建索引指定为 -1 即可
删除索引
删除集合所有索引
db.getCollection('chongqing').dropIndexes()
删除集合指定索引
db.getCollection('chongqing').dropIndex('索引名')
随机查询
$sample
db.answers.aggregate([
{ $sample: { size: 20 }}
])
3.2+版本中新增,类似于大数据中的“数据采样”方式,从input中随机选择N条documents,语法“{$sample: {size: }}”。如果N大于collection中总数据的5%,那么$sample将会执行collection扫描、sort,然后选择top N条文档;如果N小于5%,对于wiredTiger而言则会遍历collection并使用“伪随机”的方式选取N条文档,对于MMAPv1引擎则在_id索引上随机选取N条文档
关联过滤语句
db.sw_integral_user.aggregate([
{$lookup:{
from: "user_base_info",
localField: "uid",
foreignField: "_id",
as: "user"
}},
{
$unwind: "$user"
},
{$project:{ _id: 0, integralCount: 1, name:"$user.realname", "nick":"$user.info.name","mobile":"$user.mobile"}},
{$sort: {integralCount: -1}}
])
结果
{
"integralCount": NumberLong("1084"),
"name": "李牧华",
"nick": "李牧华",
"mobile": "182857586xx"
}
批量更新
db.getCollection('sw_report_record').find({"reportStatus" : 6.0}).forEach(
function(item){
db.getCollection('sw_report_record').update({"_id":item._id},{$set:{"reportStatus":5}})
}
)
// 更新整型
db.getCollection('test_paper_question_bank').find({}).forEach(
function(item){
db.getCollection('test_paper_question_bank').update({"_id":item._id},{$set:{"cityCode": NumberInt(520502)}})
}
)
条件批量删除
db.recordChipScan.deleteMany({ "createTime": { $gt: ISODate("2023-05-06T16:44:33.005+08:00") } })
只查询某列值
db.user.find({},{'phone':1})