MongoDB 查询数据基础
发布时间:2023-10-04 14:42:29 所属栏目:系统 来源:
导读:使用library数据库
use libraray
查看可用数据库和集合
show dbs
show collections
插入数据insert操作
两种定义文档的格式:
document = ( { "Type" : "Book", "Title" : "Definitive Gu
use libraray
查看可用数据库和集合
show dbs
show collections
插入数据insert操作
两种定义文档的格式:
document = ( { "Type" : "Book", "Title" : "Definitive Gu
使用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" }}}}) (编辑:聊城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐