千家信息网

MongoDB 查找数据基础

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,使用library数据库use libraray查看可用数据库和集合show dbs show collections插入数据insert操作两种定义文档的格式:document = ( { "Typ
千家信息网最后更新 2026年11月02日MongoDB 查找数据基础

使用library数据库

use libraray



查看可用数据库和集合

show dbs show collections


插入数据insert操作

两种定义文档的格式:

document = ( { "Type" : "Book", "Title" : "Definitive Guide to MongoDB 2nd ed.,The", "ISBN" : "978-1-4302-5821-6", "Publisher" : "Apress", "Author": ["Hows, David","Plugge, Eelco", "Membrey, Peter", "Hawkins, Tim" ] } )document = ( { "Type" : "Book", "Title" : "Definitive Guide to MongoDB 2nd ed.,The", "ISBN" : "978-1-4302-5821-6","Publisher" : "Apress","Author": ["Hows, David","Plugge, Eelco", "Membrey, Peter", "Hawkins, Tim" ] } )

直接使用insert插入:

db.media.insert(document)




也可以不定义文档直接插入:

db.media.insert({ "Type" : "CD", "Artist" : "Nirvana", "Title" : "Nevermind" })


或:

db.media.insert( { "Type" : "CD","Artist" : "Nirvana","Title" : "Nevermind", "Tracklist" : [{"Track" : "1","Title" : "Smells Like Teen Spirit","Length" : "5:02"},{"Track" : "2","Title" : "In Bloom","Length" : "4:15"}]})


查询数据find操作
查询所有数据:

db.media.find()



查询特定的文档:

db.media.find({Artist:"Nirvana"})



查看特定的列

db.media.find({Artist:"Nirvana"},{Title:1})


只要在find中使用第二个参数{Title:1}返回标题字段信息即可。将1改为0为不显示该标题


具体查询(有点像SQL的where条件):

db.media.find({"Tracklist.Title":"In Bloom"})


查询Tracklist下Title为"In Bloom"的数据

db.media.find({"Author":"Membrey, Peter"})


查询数组Author中含有"Membrey, Peter"的文档

使用sort、limit、skip函数
排序:

db.media.find().sort({Title:1})

升序,只要将Title:1改成-1就为倒序

限制输出n个文档:

db.media.find().limit(2)


不限显示第一个文档:

db.media.find().skip(1)



三个函数结合一起使用:
安Titile倒序,显示10个文档,跳过头一个

db.media.find().sort({Title:-1}).limit(10).skip(1)




固定顺序集合:
创建固定顺序集合:

db.createCollection("audit",{capped:true,size:204800})


这种集合能保证插入的文档按照插入顺序排序,不会在以后更新中改变顺序。


聚集函数(类似SQL的Group by):
count函数:

db.media.count()


返回当前media集合有多少个文档
指定符合条件的文档数:

db.media.find({Publisher:"Apress"}).count()


注意count会忽略skip与limit,例如:

db.media.find().skip(1).count() 等价db.media.find().count()


不想忽略skip跟limit需要在count里面添加true参数,例如:

db.media.find().skip(1).count(true)





去重复distinct函数:
增加一个文档:

document = ( { "Type" : "Book", "Title" : "Definitive Guide to MongoDB 2nd ed.,The", "ISBN" : "978-1-4302-5821-6", "Publisher" : "Apress", "Author": ["Hows, David","Plugge, Eelco", "Membrey, Peter", "Hawkins, Tim" ] } )db.media.insert(document)db.media.distinct("Title")

这样相同内容的Title就会合并成一条记录

group函数:

db.media.group({key:{Title:true},initial:{Total:0},reduce:function(items,prev){prev.Total+=200;}})

条件查询:
添加一些数据:

dvd=({ "Type" : "DVD","Title" : "Matrix,The","Released":1999,"Cast":["Keanu Reeves","Carrie-Anne Moss","Laurence Fishburne","Hugo Weaving","Gloria Foster","Joe Pantoliano"]})dvd=({"Type":"DVD",Title:"Blade Runner",Released:1992})db.media.insert(dvd)dvd=({"Type":"DVD",Title:"Toy Story 3",Released:2010})db.media.insert(dvd)

大于操作:

db.media.find({Released:{$gt:2000}})


小于:

db.media.find({Released:{$lt:2000}})


gte与lte是大于等于,小于等于
指定范围在大于等于1990到小于等于2010之间:

db.media.find({Released:{$gte:1990,$lte:2010}})


否定查询$ne:

db.media.find({Tyep:"Book",Author:{$ne:"Plugge,Eelco"}})



数组的操作:
$in 其中一个匹配即可

db.media.find({Released:{$in:[1999,2008,2009]}})


$nin全都不匹配

db.media.find({Released:{$nin:[1999,2008,2009]}})


$all匹配所有:

db.media.find({Released:{$all:[1999,2008,2009]}})


上述语句不会返回任何数据

$or 多条件搜索:

db.media.find({$or:[{"Title":"Toy Story 3"},{"ISBN":"978-1-4302-5821-6"}]})


添加参数限制类型:

db.media.find({ "Type" : "DVD",$or:[{"Title":"Toy Story 3"},{"ISBN":"978-1-4302-5821-6"}]})




$slice操作数组范围:
显示前3项:

db.media.find({"Title":"Matrix,The"},{"Cast":{$slice:3}})


后三项:

db.media.find({"Title":"Matrix,The"},{"Cast":{$slice:-3}})


忽略前2项,从开始的3个数据项:

db.media.find({"Title":"Matrix,The"},{"Cast":{$slice:[2,3]}})


从倒数第5个开始输出4个数据:

db.media.find({"Title":"Matrix,The"},{"Cast":{$slice:[-5,4]}})



奇偶数操作:
偶数的年份:

db.media.find({Released:{$mod:[2,0]}})


奇数:

db.media.find({Released:{$mod:[2,1]}})



查询数组元素数量符合特定值:

db.media.find({Tracklist:{$size:2}})


Tracklist数组只有两个元素的文档

返回特定对象存在:

db.media.find({Author:{$exists:true}})



匹配完整的数组
添加一个文档:

 nirvana = ( { "Type" : "CD", "Artist" : "Nirvana", "Title" : "Nirvana","Tracklist" : [ { "Track" : "1", "Title" : "You Know You're Right", "Length": "3:38"}, {"Track" : "5", "Title" : "Smells Like Teen Spirit", "Length" :"5:02" } ] } )



查找Tracklist.Title为"Smells Like Teen Spirit"并且为Track 1的数据将会有多行重复
利用$elemMatch可以匹配数组中的完整文档

 db.media.find({"Tracklist":{"$elemMatch":{Title:"Smells Like Teen Spirit","Track":"1"}}})


可以使用$not否定该条件,例如:

db.media.find({"Tracklist":{$not:{"$elemMatch":{Title:"Smells Like Teen Spirit","Track":"1" }}}})


文档 数据 查询 数组 函数 条件 顺序 参数 倒序 元素 数据库 标题 范围 排序 输出 限制 相同 过头 三个 两个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 南京欣网互联网络科技 互联网前沿科技 科技类的互联网平台 科技伦理 互联网公司 剑昆互联网络科技有限公司临桂 宁夏众和广鑫互联网科技有限公司 崇明区互联网教育科技诚信经营 哈尔滨屹滨互联网科技有限公司 中和天地互联网科技有限公司 滨湖区互联网智能科技产品有哪些 工业互联网山东科技大学 深圳互联网科技的发展 上海创道互联网络科技有限公司 云鲸互联网络科技有限公司 互联网科技手机排行榜 版纳互联网科技选哪家 上海万顺科技互联网有限公司招聘 银川新华互联网科技学校是国营吗 张家口科技产业互联网平台 马化腾互联网科技教学 南京欣网互联网络科技 互联网科技海报 电子科技大学互联网 有木互联网科技 互联网科技英文翻译 科技伦理 互联网公司 互联网科技快讯热点 互联网科技包装股 众联互联网络科技 亚光科技低轨卫星互联网
0