mongo基本操作整理
# 操作环境
mongo版本号:4.0.10
查看版本号方法:db.version()
# 测试数据结构
{
"name": "阿土",
"age": NumberInt("20"),
"createTime": new Date(),
"birthday": ISODate("2019-09-05 12:57:15+0800"),
"property": NumberLong("28999999399999999")
}
1
2
3
4
5
6
7
2
3
4
5
6
7
# 新增数据
如果表名含有特殊符号,可以使用
db.getCollection("表名")
# 常规新增
//新增
db.test.insert({
"name": "阿土",
"age": NumberInt("20"),
"createTime": new Date(),
"birthday": ISODate("2019-09-05 12:57:15+0800"),
"property": NumberLong("28999999399999999")
})
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 新增或覆盖更新
//如果id不存在直接插入,否则更新
//需要注意的是,此处的更新为完全覆盖更新,要想改动其中某个字段的值不可用此方法
db.test.save({
"_id" : ObjectId("5d70b01fbbb7cdb028bed94f"),
"name": "阿土",
"age": NumberInt("19"),
"createTime": new Date(),
"birthday": ISODate("2019-09-05 12:57:15+0800"),
"property": NumberLong("28999999399999999")
})
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 查询操作
# 查询全部
db.test.find({})
1
# 排序
//根据birthday进行倒序排序(1正序, -1倒序)
db.test.find({}).sort({"birthday": -1})
1
2
2
# limit, skip
//从第二条开始查询三条数据
db.test.find({}).limit(3).skip(1)
1
2
2
limit: 每次查询的条数
skip: 从第几条开始查询(默认为0)
# 按条件查询
db.test.find({
"name" : "阿土",
"birthday" : ISODate("2019-09-05T12:57:15.000+0000")
})
1
2
3
4
2
3
4
# Or查询
db.test.find({
"$or": [
{"birthday" : ISODate("2019-09-04T04:57:15.000+0000")},
{"birthday" : ISODate("2019-09-05T12:57:15.000+0000")}
]
})
1
2
3
4
5
6
2
3
4
5
6
# And查询,大于等于,小于等于
db.test.find({
"$and": [
{"birthday" : {"$gte": ISODate("2019-09-04T04:57:15.000+0000")}},
{"birthday" : {"$lte": ISODate("2019-09-05T12:57:15.000+0000")}}
]
})
1
2
3
4
5
6
2
3
4
5
6
# 更新
# 常规更新
db.test.update(
{"age" : NumberInt(20)}, //查询条件
{"$set":{"name" : "阿黑"}}, //更新的字段
{
upsert: true, //如果不存在该记录时是否插入这个对象,插入的对象为查询条件字段和更新的字段之和
multi: true //如果为true则更新所有符合条件的对象, false时只更新第一条。默认为false
}
)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 去掉某个字段
db.test.update(
{"age" : NumberInt(20)},
{"$unset":{"字段名" : ""}},
{
upsert: true,
multi: true
}
)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 批量修改字段类型
db.test.find({}).forEach(function(item){
db.test.update(
{"_id":item._id},
{"$set": {"age": NumberLong(item.age)}}
)
})
1
2
3
4
5
6
2
3
4
5
6
# 删除数据
db.test.remove(
{"age" : NumberLong(40)}, //查询条件
{
justOne: false //默认为false, 设置为true时只删除一条数据
}
)
1
2
3
4
5
6
2
3
4
5
6