文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
数据基本操作
- use db:进入对应的数据库,需要注意:use 不仅可以进入一个数据库,如果对应的数据库不存在,会自动创建响应的数据库,但是在没有集合前,该数据库默认为空;
- db.集合.insert():新建集合和插入数据,当集合不存在时,会自动新建一个集合,并向里边插入对应数据;
- db.集合.find():查询集合里的所有文件数据,这条命令会列出集合下的所有数据,可以看到 MongoDB 是自动给我们加入了索引值的;
- db.集合.findOne():查询集合中的第一个文件数据,需要注意:MongoDB 中的所有组合单词都使用首字母小写的驼峰式写法;
- db.集合.update({查询},{修改}):修改文件数据,第一个是查询条件,第二个是要修改成的值。需要注意的是:可以新增文件数据项的;
- db.集合.remove(条件):删除文件数据,注意的是要跟一个条件;
- db.集合.drop():删除整个集合,这个在实际工作中一定要谨慎使用,如果是程序,一定要二次确认;
- db.dropDatabase():删除整个数据库,在删除库时,一定要先进入数据库,然后再删除。实际工作中这个基本不用,实际工作肯定需要保留数据和痕迹的。
// 进入 user 数据库
> use user
switched to db user
// 查看数据库中所有集合
> show collections
books
people
users
// 向 classRoom 集合中插入两条数据
> db.classRoom.insert({"name": "lisi"})
WriteResult({ "nInserted" : 1 })
> db.classRoom.insert({"name": "wangwu"})
WriteResult({ "nInserted" : 1 })
// 重新查看数据库中的所有集合
> show collections
books
classRoom
people
users
// 查询所有数据
> db.classRoom.find()
{ "_id" : ObjectId("5cba9a0b057780bbe7ea1514"), "name" : "lisi" }
{ "_id" : ObjectId("5cba9a13057780bbe7ea1515"), "name" : "wangwu" }
// 查询第一个文件数据
> db.classRoom.findOne()
{ "_id" : ObjectId("5cba9a0b057780bbe7ea1514"), "name" : "lisi" }
// 给 name 为 lisi 的数据项增加 age
> db.classRoom.update({"name": "lisi"}, {"name": "lisi", age: 18})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
// 重新查询
> db.classRoom.find()
{ "_id" : ObjectId("5cba9a0b057780bbe7ea1514"), "name" : "lisi", "age" : 18 }
{ "_id" : ObjectId("5cba9a13057780bbe7ea1515"), "name" : "wangwu" }
// 删除数据
> db.classRoom.remove({"name": "wangwu"})
WriteResult({ "nRemoved" : 1 })
// 重新查询
> db.classRoom.find()
{ "_id" : ObjectId("5cba9a0b057780bbe7ea1514"), "name" : "lisi", "age" : 18 }
// 删除整个集合
> db.classRoom.drop()
true
// 重新查看数据库所有集合
> show collections
books
people
users
// 新建 user2 数据库
> use user2
switched to db user2
// 删除 user2 数据库
> db.dropDatabase()
{ "dropped" : "user2", "ok" : 1 }
插入数据
// 切换数据库(数据库不存在也没关系)
// 如果 test 数据库不存在则创建,存在则切换到 test 数据库
> use test
switched to db test
// 向 test_collection 集合中插入数据
> db.test_collection.insert({name: '鲁班七号'})
WriteResult({ "nInserted" : 1 })
查询数据
// 查看存在的数据库
> show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
myDbs 0.000GB
myheros 0.000GB
test 0.000GB
// find 有 6 个参数
> db.books.find(query, fields, limit, skip, batchSize, options)
// 查看数据库版本
> db.version()
3.6.3
// 使用 find 查找数据
// find 方法参数为空则返回全部数据
> db.test_collection.find()
{ "_id" : ObjectId("5b8a56d52c0516ea271c4f82"), "name" : "鲁班七号" }
{ "_id" : ObjectId("5b8a96fc2c0516ea271c4f83"), "name" : "后羿" }
// 返回指定 name 的数据
> db.test_collection.find({name: '后羿'})
{ "_id" : ObjectId("5b8a96fc2c0516ea271c4f83"), "name" : "后羿" }
// for 循环插入多条数据
> for(i=2;i<100;i++)db.test_collection.insert({x:i})
WriteResult({ "nInserted" : 1 })
// 查看集合中数据条数
> db.test_collection.find().count()
100
// skip(n) 跳过 n 条数据
// limit(m) 限制返回 m 条数据
// sort({x:1}) 根据 x 字段排序,1 表示升序,-1 表示降序
> db.test_collection.find().skip(3).limit(4).sort({x:1})
{ "_id" : ObjectId("5b8a982c2c0516ea271c4f85"), "x" : 3 }
{ "_id" : ObjectId("5b8a982c2c0516ea271c4f86"), "x" : 4 }
{ "_id" : ObjectId("5b8a982c2c0516ea271c4f87"), "x" : 5 }
{ "_id" : ObjectId("5b8a982c2c0516ea271c4f88"), "x" : 6 }
> db.test.find().skip(3).limit(5).sort({x:-1})
{ "_id" : ObjectId("5cbaa480057780bbe7ea1577"), "x" : 97 }
{ "_id" : ObjectId("5cbaa480057780bbe7ea1576"), "x" : 96 }
{ "_id" : ObjectId("5cbaa480057780bbe7ea1575"), "x" : 95 }
{ "_id" : ObjectId("5cbaa480057780bbe7ea1574"), "x" : 94 }
{ "_id" : ObjectId("5cbaa480057780bbe7ea1573"), "x" : 93 }
更新数据
// 查询 x:3 数据
> db.test_collection.find({x:3})
{ "_id" : ObjectId("5b8a982c2c0516ea271c4f85"), "x" : 3 }
// 更新 x:3 数据为 x:333
> db.test_collection.update({x:3}, {x:333})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.test_collection.insert({x:100, y:100, z:100})
WriteResult({ "nInserted" : 1 })
// 部分数据更新采用$set
> db.test_collection.update({z:100},{$set:{y:99}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
// 查询更新后的结果
> db.test_collection.find({z:100})
{ "_id" : ObjectId("5b8a9be92c0516ea271c4fe6"), "x" : 100, "y" : 99, "z" : 100 }
// 第三个参数 true,表示当 y=100 的数据不存在时,自动插入 y=999 的数据(即要更新的数据)
> db.test_collection.update({y:100},{y:999},true)
WriteResult({
"nMatched" : 0,
"nUpserted" : 1,
"nModified" : 0,
"_id" : ObjectId("5b8b4e4cc06181d9a6bb896b")
})
> db.test_collection.find({y:999})
{ "_id" : ObjectId("5b8b4e4cc06181d9a6bb896b"), "y" : 999 }
db.collection.update(<query>, <update>, {upsert: <boolean>,multi: <boolean>,writeConcern: <document> } )
参数说明:
- query:update 的查询条件;
- update:update 的对象和一些更新的操作符(如,,,inc...)等;
- upsert:可选,这个参数的意思是,如果不存在 update 的记录,是否插入 objNew,true 为插入,默认是 false;
- multi:可选,mongodb 默认是 false,只更新找到的第一条记录;
- writeConcern:可选,抛出异常的级别。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论