返回介绍

数据基本操作

发布于 2024-12-09 12:55:34 字数 5784 浏览 0 评论 0 收藏 0

  • 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文