0%

mongo基本操作整理

mongodb基础操作整理,用于平时检索。

操作环境

mongo版本号:4.0.10

查看版本号方法:db.version()

测试数据结构

1
2
3
4
5
6
7
{
"name": "阿土",
"age": NumberInt("20"),
"createTime": new Date(),
"birthday": ISODate("2019-09-05 12:57:15+0800"),
"property": NumberLong("28999999399999999")
}

新增数据

如果表名含有特殊符号,可以使用db.getCollection("表名")

常规新增

1
2
3
4
5
6
7
8
//新增
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
10
//如果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
db.test.find({})

排序

1
2
//根据birthday进行倒序排序(1正序, -1倒序)
db.test.find({}).sort({"birthday": -1})

limit, skip

1
2
//从第二条开始查询三条数据
db.test.find({}).limit(3).skip(1)

limit: 每次查询的条数

skip: 从第几条开始查询(默认为0)

按条件查询

1
2
3
4
db.test.find({
"name" : "阿土",
"birthday" : ISODate("2019-09-05T12:57:15.000+0000")
})

Or查询

1
2
3
4
5
6
db.test.find({
"$or": [
{"birthday" : ISODate("2019-09-04T04:57:15.000+0000")},
{"birthday" : ISODate("2019-09-05T12:57:15.000+0000")}
]
})

And查询,大于等于,小于等于

1
2
3
4
5
6
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
7
8
db.test.update(
{"age" : NumberInt(20)}, //查询条件
{"$set":{"name" : "阿黑"}}, //更新的字段
{
upsert: true, //如果不存在该记录时是否插入这个对象,插入的对象为查询条件字段和更新的字段之和
multi: true //如果为true则更新所有符合条件的对象, false时只更新第一条。默认为false
}
)

去掉某个字段

1
2
3
4
5
6
7
8
db.test.update(
{"age" : NumberInt(20)},
{"$unset":{"字段名" : ""}},
{
upsert: true,
multi: true
}
)

批量修改字段类型

1
2
3
4
5
6
db.test.find({}).forEach(function(item){
db.test.update(
{"_id":item._id},
{"$set": {"age": NumberLong(item.age)}}
)
})

删除数据

1
2
3
4
5
6
db.test.remove(
{"age" : NumberLong(40)}, //查询条件
{
justOne: false //默认为false, 设置为true时只删除一条数据
}
)