学习mongo系列(四) find().pretty() remove() 查询
一、find() 方法以非结构化的方式来显示所有文档。如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:db.collection_name.find().pretty()
1、查看数据库下的所有的collection: show collections
2、查看collection下的数据 db.collection_name.find().pretty()
MongoDB数据更新可以使用update()函数。在执行remove()函数前先执行find()命令来判断执行的条件是否正确,这是一个比较好的习惯。
> db.user.save({name:"xxxxx",password:"11111"})
WriteResult({ "nInserted" : 1 })
> db.user.find().pretty()
{
"_id" : ObjectId("569476a63a18f4867aecbcd3"),
"name" : "xxxxx",
"password" : "11111"
}
> db.user.remove("name":"xxxxx")
2016-01-12T11:45:41.976+0800 E QUERY [thread1] SyntaxError: missing ) after a
rgument list @(shell):1:21
> db.user.remove({"name":"xxxxx"})
WriteResult({ "nRemoved" : 1 })
>还是没有注意检查括号
3、find()会返回匹配文档的所有列:
> db.user.find().pretty()
{
"_id" : ObjectId("569476a63a18f4867aecbcd3"),
"name" : "xxxxx",
"password" : "11111"
}
4、返回指定字段和_id字段(默认会返回_id字段):
db.user.find({"name":"xxxxx"},{name:1})
5、返回排除字段以外的所有字段:
db.user.find({"name":"xxxxx"},{password:0}).pretty()
所以4中要想不返回_id 字段,排除掉_id 字段即可:db.user.find({"name":"xxxxx"},{name:1, _id:0})
6、另外内嵌文档查询(点表示法):
> db.tao.find({"SourceInfo.Platform": "Taobao"},{SourceInfo:1}).pretty(){
"_id" : ObjectId("57467a880f281ce229632257"),
"SourceInfo" : {
"Platform" : "Taobao",
"Link" : "https://item.taobao.com/item.htm?spm=a219r.lm869.14.14.n6XAO5&id=527138809962&ns=1&abbucket=17#detail",
"Site" : "",
"SiteID" : "",
"ProductID" : "527138809962"
}
}
{
"_id" : ObjectId("57467ab60f281ce3adbd6b0a"),
"SourceInfo" : {
"Platform" : "Taobao",
"Link" : "https://item.taobao.com/item.htm?spm=a219r.lm869.14.14.n6XAO5&id=527138809962&ns=1&abbucket=17#detail",
"Site" : "",
"SiteID" : "",
"ProductID" : "527138809962"
}
}
> db.tao.find({"SourceInfo.Platform": "Taobao"},{"SourceInfo.Platform":1}).pretty()
{
"_id" : ObjectId("57467a880f281ce229632257"),
"SourceInfo" : {
"Platform" : "Taobao"
}
}
{
"_id" : ObjectId("57467ab60f281ce3adbd6b0a"),
"SourceInfo" : {
"Platform" : "Taobao"
}
}
7、当内嵌文档变得复杂后,如键的值为内嵌文档的数组,内嵌文档的匹配需要些许技巧,例如使用$elemMatch操作符。
"SourceInfo" :
[
"Platform" : "Taobao",
"Link" : "https://item.taobao.com/item.htm?spm=a219r.lm869.14.14.n6XAO5&id=527138809962&ns=1&abbucket=17#detail",
"Site" : "",
"SiteID" : "",
"ProductID" : "527138809962"
]
> db.tao.find({},{"SourceInfo":{$elemMatch:{"Platform":"Taobao"}}, _id:0}).pretty(),【1】
二、remove()
在执行remove()函数前先执行find()命令来判断执行的条件是否正确,这是一个比较好的习惯。
> db.user.save({name:"xxxxx",password:"11111"})
WriteResult({ "nInserted" : 1 })
> db.user.find().pretty()
{
"_id" : ObjectId("569476a63a18f4867aecbcd3"),
"name" : "xxxxx",
"password" : "11111"
}
> db.user.remove("name":"xxxxx")
2016-01-12T11:45:41.976+0800 E QUERY [thread1] SyntaxError: missing ) after a
rgument list @(shell):1:21
> db.user.remove({"name":"xxxxx"})
WriteResult({ "nRemoved" : 1 })
>还是没有注意检查括号
如果你想删除所有数据,可以使用以下方式(类似常规 SQL 的 truncate 命令):
db.user.remove()
三、MongoDB 与 RDBMS Where 语句比较(表格来自http://www.runoob.com/mongodb/mongodb-query.html)
如果你熟悉常规的 SQL 数据,通过下表可以更好的理解 MongoDB 的条件语句查询:
| 操作 | 格式 | 范例 | RDBMS中的类似语句 |
|---|---|---|---|
| 等于 | {<key>:<value>} |
db.col.find({"by":"菜鸟教程"}).pretty() |
where by = '菜鸟教程' |
| 小于 | {<key>:{$lt:<value>}} |
db.col.find({"likes":{$lt:50}}).pretty() |
where likes < 50 |
| 小于或等于 | {<key>:{$lte:<value>}} |
db.col.find({"likes":{$lte:50}}).pretty() |
where likes <= 50 |
| 大于 | {<key>:{$gt:<value>}} |
db.col.find({"likes":{$gt:50}}).pretty() |
where likes > 50 |
| 大于或等于 | {<key>:{$gte:<value>}} |
db.col.find({"likes":{$gte:50}}).pretty() |
where likes >= 50 |
| 不等于 | {<key>:{$ne:<value>}} |
db.col.find({"likes":{$ne:50}}).pretty() |
where likes != 50 |
1、为admin添加成绩50,
> db.user.update({"name":"admin"},{$set:{"grade":50}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
2、为aaaaaa添加成绩99:
> db.user.update({"name":"aaaaaaaaa"},{$set:{"grade":99}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
3、查询grade大于50的:
> db.user.find({"grade":{$gt:50}}).pretty()
{
"_id" : ObjectId("5694714a3a18f4867aecbcd2"),
"name" : "aaaaaaaaa",
"password" : "123456",
"grade" : 99
}
4、查询成绩大于等于50的:
> db.user.find({"grade":{$gte:50}}).pretty()
{
"_id" : ObjectId("56946fba3a18f4867aecbcd1"),
"name" : "admin",
"password" : "123456",
"title" : "admin",
"grade" : 50
}
{
"_id" : ObjectId("5694714a3a18f4867aecbcd2"),
"name" : "aaaaaaaaa",
"password" : "123456",
"grade" : 99
}
学习mongo系列(四) find().pretty() remove() 查询的更多相关文章
- MyBatis系列四 之 智能标签进行查询语句的拼接
MyBatis系列四 之 智能标签进行查询语句的拼接 使用Foreach进行多条件查询 1.1 foreach使用数组进行多条件查询 在MyBatis的映射文件中进行如下配置 <!--根据数组进 ...
- 学习mongo系列(一) win/mac安装 解析 连接
一.安装mongo数据库 下载链接https://www.mongodb.org/downloads, 在执行如下命令的时候事先按照目录新建如下的目录:(如果数据库安装在D盘就在D盘的根目录下建)&q ...
- 小白学习Spark系列四:RDD踩坑总结(scala+spark2.1 sql常用方法)
初次尝试用 Spark+scala 完成项目的重构,由于两者之前都没接触过,所以边学边用的过程大多艰难.首先面临的是如何快速上手,然后是代码调优.性能调优.本章主要记录自己在项目中遇到的问题以及解决方 ...
- 学习mongo系列(九)索引,聚合,复制(副本集),分片
一.索引 二.聚合 三.复制(副本集) 四.分片 尚未实践操作. 详见http://www.runoob.com/mongodb/mongodb-indexing.html
- 学习mongo系列(八)密码与权限
一.设置密码及用户角色[1] > db.createUser(... {... user: "maxh",... pwd: "123",... roles ...
- 学习mongo系列(七)aggregate() ,$group() 管道
aggregate()聚合,主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果.有点类似sql语句中的 count(*) 接上边的数据库: > db.user.aggregate ...
- 学习mongo系列(六)limit(munber),skip(number)
> db.user.find().pretty(){ "_id" : ObjectId("56946fba3a18f4867aecbcd1"), &quo ...
- 学习mongo系列(二) 新建数据库,collection ,insert(),save()
一,新建数据库user:use user 二,查看当前使用的数据库:db 三,查看所有数据库:show dbs 四,删除当前正在使用的数据库:db.dropDatabase() 五,在当前数据库中插入 ...
- oracle学习笔记(四) DQL数据查询语言和TCL 事务控制语言
DML 数据管理语言 Data manage language insert, update, delete以及select语句,不过,有人也把select单独出来,作为DQL 数据查询语言 data ...
随机推荐
- laravel redis
安装配置redis服务器 $ wget http://download.redis.io/releases/redis-3.0.5.tar.gz $ tar xzf redis-.tar.gz $ c ...
- Android中<meta-data>的使用
[转] 原文 在AndroidManifest.xml中,<meta-data>元素可以作为子元素,被包含在<activity>.<application> .& ...
- Visual Studio中编写C程序
相信很多科班出身的程序猿和我一样,第一个接触到的编程语言是C语言,第一个写的程序是“Hello World!”. 对于一个.Net程序猿,VS肯定是个非常熟悉的工具,但是如何使用VS编写一个C语言程序 ...
- 百度地图API-自定义图标覆盖物
地图覆盖物 Overlay:覆盖物的抽象基类,所有的覆盖物均继承此类的方法. Marker:标注表示地图上的点,可自定义标注的图标. Label:表示地图上的文本标注,您可以自定义标注的文本内容. P ...
- toggle函数
$(function() { $('.love').toggle(function() { $(this).attr("src", "images/loved.png&q ...
- Top (参数)
最近在优化数据库服务器上高消耗语句/过程,发现一个存储过程优化后依旧出现在Profiler跟踪里.将Profiler跟踪文件中过程执行语句取出,打开一个查询窗口(SPID=144),set stati ...
- DuiLib学习笔记5——标题栏不能正常隐藏问题
我之前代码都是照着官方那个Duilib入门文档.doc来学习的.但是遇到一个问题,虽然他隐藏了windows的自带标题栏,可以自己绘画一个标题栏了,但是在这个标题栏下方,用力乱戳,就可能把系统自带的, ...
- mysql apache php install
设置LINUX自动匹配环境变量 1.$su #su进入root #vi /etc/profile 在文件末尾加上下列语句: PATH=$PATH:/sbin #在PATH变量后追加/sbin目录 ex ...
- sdutoj 2610 Boring Counting
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2610 Boring Counting Time ...
- datatable动态添加,及填充数据
DataTable tblDatas = new DataTable("Datas"); tblDatas.Columns.Add("ID", Type.Get ...