MongoDB数据表基本操作

本文介绍了MongoDB的基本操作,包括数据表的创建、查询、修改和删除等,并提供了详细的命令示例,帮助读者快速掌握MongoDB的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MongoDB数据表基本操作

查看全部数据表

复制代码
>useChatRoom
switchedtodbChatRoom
>showcollections
Account
Chat
system.indexes
system.users
复制代码

创建数据表

>db.createCollection( " Account ")
{ " ok ":1}

> db.createCollection( " Test ",{capped:true, size:10000}) { " ok " : 1 }

{ " ok ":1}

-- 说明

capped:true,表示该集合的结构不能被修改;

size:在建表之初就指定一定的空间大小,接下来的插入操作会不断地按顺序APPEND数据在这个预分配好空间的文件中,如果已经超出空间大小,则回到文件头覆盖原来的数据继续插入。这种结构保证了插入和查询的高效性,它不允许删除单个记录,更新的也有限制:不能超过原有记录的大小。这种表效率很高,它适用于一些暂时保存数据的场合,比如网站中登录用户的session信息,又比如一些程序的监控日志,都是属于过了一定的时间就可以被覆盖的数据。

修改数据表名

>db.Account.renameCollection( " Account1 ")
{ " ok ":1}

数据表帮助主题help

复制代码
>db.Account.help()
DBCollectionhelp
db.Account.find().help()-showDBCursorhelp
db.Account.count()
db.Account.dataSize()
db.Account.distinct(key)-eg.db.Account.distinct( ' x ')
db.Account.drop()dropthecollection
db.Account.dropIndex(name)
db.Account.dropIndexes()
db.Account.ensureIndex(keypattern[,options])-options isanobjectwiththesepossiblefields:name,unique,dropDups
db.Account.reIndex()
db.Account.find([query],[fields])-query isanoptionalqueryfilter.fields isoptionalsetoffieldsto return.
e.g.db.Account.find({x:77},{name:1,x:1})
db.Account.find(...).count()
db.Account.find(...).limit(n)
db.Account.find(...).skip(n)
db.Account.find(...).sort(...)
db.Account.findOne([query])
db.Account.findAndModify({update:...,remove:bool[,query:{},sort:{}, ' new ':false]})
db.Account.getDB()getDBobjectassociatedwithcollection
db.Account.getIndexes()
db.Account.group({key:...,initial:...,reduce:...[,cond:...]})
db.Account.mapReduce(mapFunction,reduceFunction,<optionalparams>)
db.Account.remove(query)
db.Account.renameCollection(newName,<dropTarget>)renamesthecollection.
db.Account.runCommand(name,<options>)runsadbcommandwiththegivennamewherethefirstparam isthecollectionname
db.Account.save(obj)
db.Account.stats()
db.Account.storageSize()-includesfreespaceallocatedtothiscollection
db.Account.totalIndexSize()-size inbytesofalltheindexes
db.Account.totalSize()-storageallocated foralldata andindexes
db.Account.update(query,object[,upsert_bool,multi_bool])
db.Account.validate()-SLOW
db.Account.getShardVersion()-only forusewithsharding
复制代码

查看全部表记录

>db.Account.find()
{ " _id ":ObjectId( " 4df08553188e444d001a763a "), " AccountID ":1, " UserName ": " libing ", " Password ": " 1 ", " Age ":26, " Email ": " libing@126.com ", " RegisterDate ": " 2011-06-0916:31:25 "}
{ " _id ":ObjectId( " 4df08586188e444d001a763b "), " AccountID ":2, " UserName ": " lb ", " Password ": " 1 ", " Age ":25, " Email ": " libing@163.com ", " RegisterDate ": " 2011-06-0916:36:95 "}

--SELECT * FROM Account

说明:

默认每页显示20条记录,当显示不下的情况下,可以用it迭代命令查询下一页数据。
可以通过DBQuery.shellBatchSize设置每页显示数据的大小。如:DBQuery.shellBatchSize = 5,这样每页就显示5条记录了。

复制代码
>db.Test.find()
{ " _id ":ObjectId( " 4df6d55407444568af61cfea "), " TestID ":1}
{ " _id ":ObjectId( " 4df6d55907444568af61cfeb "), " TestID ":2}
{ " _id ":ObjectId( " 4df6d55b07444568af61cfec "), " TestID ":3}
{ " _id ":ObjectId( " 4df6d55e07444568af61cfed "), " TestID ":4}
{ " _id ":ObjectId( " 4df6d56207444568af61cfee "), " TestID ":5}
{ " _id ":ObjectId( " 4df6d56507444568af61cfef "), " TestID ":6}
{ " _id ":ObjectId( " 4df6d56807444568af61cff0 "), " TestID ":7}
{ " _id ":ObjectId( " 4df6d56b07444568af61cff1 "), " TestID ":8}
{ " _id ":ObjectId( " 4df6d56e07444568af61cff2 "), " TestID ":9}
{ " _id ":ObjectId( " 4df6d57a07444568af61cff3 "), " TestID ":10}
{ " _id ":ObjectId( " 4df6d57d07444568af61cff4 "), " TestID ":11}
{ " _id ":ObjectId( " 4df6d58007444568af61cff5 "), " TestID ":12}
{ " _id ":ObjectId( " 4df6d58307444568af61cff6 "), " TestID ":13}
{ " _id ":ObjectId( " 4df6d58e07444568af61cff7 "), " TestID ":14}
{ " _id ":ObjectId( " 4df6d59207444568af61cff8 "), " TestID ":15}
{ " _id ":ObjectId( " 4df6d59607444568af61cff9 "), " TestID ":16}
{ " _id ":ObjectId( " 4df6d59c07444568af61cffa "), " TestID ":17}
{ " _id ":ObjectId( " 4df6d5a307444568af61cffb "), " TestID ":18}
{ " _id ":ObjectId( " 4df6d5a607444568af61cffc "), " TestID ":19}
>DBQuery.shellBatchSize
20
>DBQuery.shellBatchSize=5
5
>db.Test.find()
{ " _id ":ObjectId( " 4df6d55407444568af61cfea "), " TestID ":1}
{ " _id ":ObjectId( " 4df6d55907444568af61cfeb "), " TestID ":2}
{ " _id ":ObjectId( " 4df6d55b07444568af61cfec "), " TestID ":3}
{ " _id ":ObjectId( " 4df6d55e07444568af61cfed "), " TestID ":4}
{ " _id ":ObjectId( " 4df6d56207444568af61cfee "), " TestID ":5}
hasmore
>it
{ " _id ":ObjectId( " 4df6d56507444568af61cfef "), " TestID ":6}
{ " _id ":ObjectId( " 4df6d56807444568af61cff0 "), " TestID ":7}
{ " _id ":ObjectId( " 4df6d56b07444568af61cff1 "), " TestID ":8}
{ " _id ":ObjectId( " 4df6d56e07444568af61cff2 "), " TestID ":9}
{ " _id ":ObjectId( " 4df6d57a07444568af61cff3 "), " TestID ":10}
hasmore
>it
{ " _id ":ObjectId( " 4df6d57d07444568af61cff4 "), " TestID ":11}
{ " _id ":ObjectId( " 4df6d58007444568af61cff5 "), " TestID ":12}
{ " _id ":ObjectId( " 4df6d58307444568af61cff6 "), " TestID ":13}
{ " _id ":ObjectId( " 4df6d58e07444568af61cff7 "), " TestID ":14}
{ " _id ":ObjectId( " 4df6d59207444568af61cff8 "), " TestID ":15}
hasmore
>it
{ " _id ":ObjectId( " 4df6d59607444568af61cff9 "), " TestID ":16}
{ " _id ":ObjectId( " 4df6d59c07444568af61cffa "), " TestID ":17}
{ " _id ":ObjectId( " 4df6d5a307444568af61cffb "), " TestID ":18}
{ " _id ":ObjectId( " 4df6d5a607444568af61cffc "), " TestID ":19}
>it
nocursor
复制代码

查询一条记录

复制代码
>db.Account.findOne()
{
" _id ":ObjectId( " 4ded95c3b7780a774a099b7c "),
" UserName ": " libing ",
" Password ": " 1 ",
" Email ": " libing@126.cn ",
" RegisterDate ": " 2011-06-0711:06:25 "
}
复制代码

--SELECT TOP 1 * FROM Account

查询聚集中字段的不同记录

>db.Account.distinct( " UserName ")

--SELECT DISTINCT("UserName") FROM Account

查询聚集中UserName包含“keyword”关键字的记录

db.Account.find({ " UserName ":/keyword/})

--SELECT * FROM Account WHERE UserName LIKE '%keyword%'

查询聚集中UserName以"keyword" 开头的记录

>db.Account.find({ " UserName ":/^keyword/})

--SELECT * FROM Account WHERE UserName LIKE 'keyword%'

查询聚集中UserName以“keyword”结尾的记录

>db.Account.find({ " UserName ":/keyword$/})

--SELECT * FROM Account WHERE UserName LIKE '%keyword'

查询聚集中指定列

>db.Account.find({},{ " UserName ":1, " Email ":1}) --1:true

--SELECT UserName,Email FROM Account

查询聚集中排除指定列

>db.Account.find({},{ " UserName ":0}) --0:false

查询聚集中指定列,且Age > 20

>db.Account.find({ " Age ":{ " $gt ":20}},{ " UserName ":1, " Email ":1})

--SELECT UserName,Email FROM Account WHERE Age > 20

聚集中字段排序

>db.Account.find().sort({ " UserName ":1})--升序
>db.Account.find().sort({ " UserName ":-1})--降序

--SELECT * FROM Account ORDER BY UserName ASC

--SELECT * FROM Account ORDER BY UserName DESC

统计聚集中记录条数

>db.Account.find().count()

--SELECT COUNT(*) FROM Account

统计聚集中符合条件的记录条数

>db.Account.find({ " Age ":{ " $gt ":20}}).count()

-- SELECT COUNT(*) FROM Account WHERE Age > 20

统计聚集中字段符合条件的记录条数

>db.Account.find({ " UserName ":{ " $exists ":true}}).count()

--SELECT COUNT(UserName) FROM Account

查询聚集中前5条记录

>db.Account.find().limit(5)

--SELECT TOP 5 * FROM Account

查询聚集中第10条以后的记录

>db.Account.find().skip(10)

--SELECT * FROM Account WHERE AccountID NOT IN (SELECT TOP 10 AccountID FROM Account)

查询聚集中第10条记录以后的5条记录

>db.Account.find().skip(10).limit(5)

--SELECT TOP 5 * FROM Account WHERE AccountID NOT IN (SELECT TOP 10 AccountID FROM Account)

or查询

>db.Account.find({ " $or ":[{ " UserName ":/keyword/},{ " Email ":/keyword/}]},{ " UserName ":true, " Email ":true})

--SELECT UserName,Email FROM Account WHERE UserName LIKE '%keyword%' OR Email LIKE '%keyword%'

添加新记录

>db.Account.insert({AccountID:2,UserName: " lb ",Password: " 1 ",Age:25,Email: " libing@163.com ",RegisterDate: " 2011-06-0916:36:95 "})

修改记录

>db.Account.update({ " AccountID ":1},{ " $set ":{ " Age ":27, " Email ": " libingql@163.com "}})
>db.Account.find({ " AccountID ":1})
{ " AccountID ":1, " Age ":27, " Email ": " libingql@163.com ", " Password ": " 1 ", " RegisterDate ": " 2011-06-0916:31:25 ", " UserName ": " libing ", " _id ":ObjectId( " 4df08553188e444d001a763a ")}

>db.Account.update({ " AccountID ":1},{ " $inc ":{ " Age ":1}})
>db.Account.find({ " AccountID ":1})
{ " AccountID ":1, " Age ":28, " Email ": " libingql@163.com ", " Password ": " 1 ", " RegisterDate ": " 2011-06-0916:31:25 ", " UserName ": " libing ", " _id ":ObjectId( " 4df08553188e444d001a763a ")}

删除记录

>db.Account.remove({ " AccountID ":1})--DELETEFROMAccountWHEREAccountID=1

>db.Account.remove({ " UserName ": " libing "})--DELETEFROMAccountWHEREUserName= ' libing '

>db.Account.remove({ " Age ":{$lt:20}})--DELETEFROMAccountWHEREAge<20
>db.Account.remove({ " Age ":{$lte:20}})--DELETEFROMAccountWHEREAge<=20
>db.Account.remove({ " Age ":{$gt:20}})--DELETEFROMAccountWHEREAge>20
>db.Account.remove({ " Age ":{$gte:20}})--DELETEFROMAccountWHEREAge>=20
>db.Account.remove({ " Age ":{$ne:20}})--DELETEFROMAccountWHEREAge!=20

>db.Account.remove()--全部删除
>db.Account.remove({})--全部删除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值