- 浏览: 254297 次
- 性别:
- 来自: 深圳
-
文章分类
- 全部博客 (159)
- java (38)
- extjs (6)
- jquery (3)
- struts2 (0)
- hibernate (3)
- spring (1)
- flex (1)
- css (2)
- js (3)
- html (4)
- android (4)
- linux (9)
- swing (0)
- java E-mail (0)
- 心情故事 (11)
- mysql (4)
- jbpm (7)
- 我的搜索之路 (2)
- MyBatis (3)
- 玩转svn (3)
- 生活无处不美 (0)
- 工具 (4)
- 数据统计与分析 (1)
- quartz (1)
- webservices (2)
- jboss (1)
- php (1)
- hadoop (3)
- maven (5)
- Discuz! (1)
- windows (1)
- 站长之家 (1)
- OSGi (1)
- 软件测试 (2)
- redis (4)
- git (5)
- MongoDB (4)
- lucene (3)
- freemarker (5)
- html5 (4)
- itext (1)
- nginx (1)
最新评论
-
kiansoung:
在Slave机器需不需开SecondaryNameNode程序 ...
快速了解Hadoop架构 -
忧郁的小老虎:
openjdk和jdk的区别与联系 -
TheMatrix:
...
MyBatis入门实例 -
lishl:
非常感谢分享。详细,务实。赞一个。
Lucene学习笔记【2013-04-10更新】 -
派尔人事:
关于JPA一对一关系的删除问题,有请大家帮忙,感激不尽
创建数据库,集合 由于MongoDB不是关系型数据库文件,实际上,它并不存在传统关系型数据库中所谓”数据库”的概念,当你第一次新增数据时,MongoDB就会以collection集合的开式进行保存和新建,而不需要你提前去建立 列出所有/当前的数据库使用show dbs命令查看所有的数据库, 用db命令查询当前链接的数据库
有些同学可能感觉到很奇怪,为什么连接了test数据库,在显示所有数据库的时候竟没有test呢?这是因为连接test时,并没有向其中写数据,所以并没有真正的建立、只是在使用当前的数据库。 定义新的数据库连接用“use 数据库名”来定义新的数据库连接,和上面的test一样,只是建立了连接
增加文档MongoDB插入原理:使用驱动程序进行插入的时候,会装数据转换成BSON格式,数据库会解析BSON,并检查是否含有“_id”键,因为“_id”键在插入到数据库时MongoDB会自动生成。 定义一个collection(集合),名为users,然后插入文档:
首先用insert(用save也可以)语句插入一条数据,使用的是users集合,插入成功后查看所有的库,多了一个mydb库,再查看所有的集合(用show collections或show tables),多了一个users集合,再用db.users.find()查看users集合中的所有文档。 可以增加字段
让id自增长的解决方案:定义一个函数,在插入_id时调用自己定义的函数来实现id自增
注:system.indexes是由所有文档的_id组成的索引集合。 存储在MongoDB集合中的每个文档都有一个默认的主键_id,它必须是唯一的,这个主键名称是固定的,它可以是MongoDB支持的任何数据类型,默认是ObjectId. Insert和save的不同点:如果已存在_id,Insert会插入失败,而save会更新原有的数据 删除文档删除文档用remove命令 语法格式:db.collname.remove({条件}),不写条件删除所有记录
更新文档先来创建两条记录,然后进行更新操作
我们用上面这种方法来更新另外一条记录
发现了没,sex字段竟没有了,这时候set关键字就派上用场了
|
查询文档
查询用find或findOne(查询一条)
语法格式:db.collname.find({条件}),不写条件查询所有的数据
> db.users.find() { "_id" : ObjectId("50325c3595e66fd3daf3beac"), "name" : "mynosql" } { "_id" : ObjectId("50325c0a95e66fd3daf3beab"), "name" : "mongodbname" } { "_id" : ObjectId("50325e87b8e32f5aeae17d8c"), "name" : "nosqls", "sex" : "man" } > db.users.find ({name:"nosqls"}) { "_id" : ObjectId("50325e87b8e32f5aeae17d8c"), "name" : "nosqls", "sex" : "man" } > db.users.findOne() { "_id" : ObjectId("50325c3595e66fd3daf3beac"), "name" : "mynosql" } > |
查询指定的字段,_id默认是显示的,如果不要其显示,用_id:0
> db.users.find({name:'nosqls'}) { "_id" : ObjectId("50325e87b8e32f5aeae17d8c"), "name" : "nosqls", "sex" : "man" } > db.users.find({name:"nosqls"},{name:1}) { "_id" : ObjectId("50325e87b8e32f5aeae17d8c"), "name" : "nosqls" } > db.users.find({name:"nosqls"},{name:1,sex:1}) { "_id" : ObjectId("50325e87b8e32f5aeae17d8c"), "name" : "nosqls", "sex" : "man" } > db.users.find({name:"nosqls"},{name:1,sex:1,_id:0}) { "name" : "nosqls", "sex" : "man" } |
在mysql中,我们有这样的语句:
Select * from t1 order by age desc limit 1,2
Select count(*) from t1
这在MongoDB中是否也有类似的函数呢?答案是肯定的,下面我们来插入一些数据来操作
> for(i=1;i<=10;i++){ ... db.c1.insert({name:"user"+i,age:i}); ... } > db.c1.find() { "_id" : ObjectId("5032d0b73142123b5a215d50"), "name" : "user1", "age" : 1 } { "_id" : ObjectId("5032d0b73142123b5a215d51"), "name" : "user2", "age" : 2 } { "_id" : ObjectId("5032d0b73142123b5a215d52"), "name" : "user3", "age" : 3 } { "_id" : ObjectId("5032d0b73142123b5a215d53"), "name" : "user4", "age" : 4 } { "_id" : ObjectId("5032d0b73142123b5a215d54"), "name" : "user5", "age" : 5 } { "_id" : ObjectId("5032d0b73142123b5a215d55"), "name" : "user6", "age" : 6 } { "_id" : ObjectId("5032d0b73142123b5a215d56"), "name" : "user7", "age" : 7 } { "_id" : ObjectId("5032d0b73142123b5a215d57"), "name" : "user8", "age" : 8 } { "_id" : ObjectId("5032d0b73142123b5a215d58"), "name" : "user9", "age" : 9 } { "_id" : ObjectId("5032d0b73142123b5a215d59"), "name" : "user10", "age" : 10 } > |
用count()统计文档数
用sort来对文档进行排序,age:-1表示以age降序来显示,age:1表示以age升序来显示
用limit来限制输出几条文档,用skip跳过几个再输出,limit、skip、sort和count的可以组合使用
> db.c1.count() 10 > db.c1.find().sort({age:-1}) { "_id" : ObjectId("5032d0b73142123b5a215d59"), "name" : "user10", "age" : 10 } { "_id" : ObjectId("5032d0b73142123b5a215d58"), "name" : "user9", "age" : 9 } { "_id" : ObjectId("5032d0b73142123b5a215d57"), "name" : "user8", "age" : 8 } { "_id" : ObjectId("5032d0b73142123b5a215d56"), "name" : "user7", "age" : 7 } { "_id" : ObjectId("5032d0b73142123b5a215d55"), "name" : "user6", "age" : 6 } { "_id" : ObjectId("5032d0b73142123b5a215d54"), "name" : "user5", "age" : 5 } { "_id" : ObjectId("5032d0b73142123b5a215d53"), "name" : "user4", "age" : 4 } { "_id" : ObjectId("5032d0b73142123b5a215d52"), "name" : "user3", "age" : 3 } { "_id" : ObjectId("5032d0b73142123b5a215d51"), "name" : "user2", "age" : 2 } { "_id" : ObjectId("5032d0b73142123b5a215d50"), "name" : "user1", "age" : 1 } > db.c1.find().sort({age:1}) { "_id" : ObjectId("5032d0b73142123b5a215d50"), "name" : "user1", "age" : 1 } { "_id" : ObjectId("5032d0b73142123b5a215d51"), "name" : "user2", "age" : 2 } { "_id" : ObjectId("5032d0b73142123b5a215d52"), "name" : "user3", "age" : 3 } { "_id" : ObjectId("5032d0b73142123b5a215d53"), "name" : "user4", "age" : 4 } { "_id" : ObjectId("5032d0b73142123b5a215d54"), "name" : "user5", "age" : 5 } { "_id" : ObjectId("5032d0b73142123b5a215d55"), "name" : "user6", "age" : 6 } { "_id" : ObjectId("5032d0b73142123b5a215d56"), "name" : "user7", "age" : 7 } { "_id" : ObjectId("5032d0b73142123b5a215d57"), "name" : "user8", "age" : 8 } { "_id" : ObjectId("5032d0b73142123b5a215d58"), "name" : "user9", "age" : 9 } { "_id" : ObjectId("5032d0b73142123b5a215d59"), "name" : "user10", "age" : 10 } > db.c1.find().limit(2); { "_id" : ObjectId("5032d0b73142123b5a215d50"), "name" : "user1", "age" : 1 } { "_id" : ObjectId("5032d0b73142123b5a215d51"), "name" : "user2", "age" : 2 } > db.c1.find().sort({name:-1}).limit(2); { "_id" : ObjectId("5032d0b73142123b5a215d58"), "name" : "user9", "age" : 9 } { "_id" : ObjectId("5032d0b73142123b5a215d57"), "name" : "user8", "age" : 8 } > db.c1.find().skip(5).limit(3); { "_id" : ObjectId("5032d0b73142123b5a215d55"), "name" : "user6", "age" : 6 } { "_id" : ObjectId("5032d0b73142123b5a215d56"), "name" : "user7", "age" : 7 } { "_id" : ObjectId("5032d0b73142123b5a215d57"), "name" : "user8", "age" : 8 } > db.c1.find().skip(5).limit(3).count(); 10 > db.c1.find().skip(5).limit(3).count(1) 3 > db.c1.find().skip(5).limit(3).count(0) 10 |
注:
如果limit、skip、sort和count组合使用,是先排序、再跳过几条,然后再限制输出几条。
count如果不输入参数或者输入为0,会把find()后面的参数忽略,如果他的参数不为0,则统计在前面的条件过滤后的结果
条件表达式
1. <($lt),<=($lte),>($gt),>=($gte) ,!=($ne)
> db.c1.find({age:{$gt:5}}) { "_id" : ObjectId("5032d0b73142123b5a215d55"), "name" : "user6", "age" : 6 } { "_id" : ObjectId("5032d0b73142123b5a215d56"), "name" : "user7", "age" : 7 } { "_id" : ObjectId("5032d0b73142123b5a215d57"), "name" : "user8", "age" : 8 } { "_id" : ObjectId("5032d0b73142123b5a215d58"), "name" : "user9", "age" : 9 } { "_id" : ObjectId("5032d0b73142123b5a215d59"), "name" : "user10", "age" : 10 } > db.c1.find({age:{$gt:5,$lte:8}}) { "_id" : ObjectId("5032d0b73142123b5a215d55"), "name" : "user6", "age" : 6 } { "_id" : ObjectId("5032d0b73142123b5a215d56"), "name" : "user7", "age" : 7 } { "_id" : ObjectId("5032d0b73142123b5a215d57"), "name" : "user8", "age" : 8 } > |
2. $all
$all操作要求数组里面的值全部被包含在返回的记录里面,如:
> db.c2.insert({a:[123,1,2,3,4]}) > db.c2.find() { "_id" : ObjectId("5032d6a63142123b5a215d5a"), "a" : [ 123, 1, 2, 3, 4 ] } > db.c2.find({a:{$all:[2,3]}}) { "_id" : ObjectId("5032d6a63142123b5a215d5a"), "a" : [ 123, 1, 2, 3, 4 ] } > db.c2.find({a:{$all:[2,6]}}) > |
3. $exists
$exists操作检查一个字段是否存在,如:
> db.c2.find({age:{$exists:1}}) > db.c2.find({a:{$exists:1}}) { "_id" : ObjectId("5032d6a63142123b5a215d5a"), "a" : [ 123, 1, 2, 3, 4 ] } > |
4. $mod
$mod操作可以让我们简单的进行取模操作,而不需要用到where子句,如:
> db.c1.find({age:{$mod:[2,1]}}) { "_id" : ObjectId("5032d0b73142123b5a215d50"), "name" : "user1", "age" : 1 } { "_id" : ObjectId("5032d0b73142123b5a215d52"), "name" : "user3", "age" : 3 } { "_id" : ObjectId("5032d0b73142123b5a215d54"), "name" : "user5", "age" : 5 } { "_id" : ObjectId("5032d0b73142123b5a215d56"), "name" : "user7", "age" : 7 } { "_id" : ObjectId("5032d0b73142123b5a215d58"), "name" : "user9", "age" : 9 } > |
5. $in, $nin
$in操作类似于传统关系数据库中的IN, $nin跟$in操作相反
> db.c1.find({age:{$in:[4,5,6]}}) { "_id" : ObjectId("5032d0b73142123b5a215d53"), "name" : "user4", "age" : 4 } { "_id" : ObjectId("5032d0b73142123b5a215d54"), "name" : "user5", "age" : 5 } { "_id" : ObjectId("5032d0b73142123b5a215d55"), "name" : "user6", "age" : 6 } > db.c1.find({age:{$nin:[4,5,6]}}) { "_id" : ObjectId("5032d0b73142123b5a215d50"), "name" : "user1", "age" : 1 } { "_id" : ObjectId("5032d0b73142123b5a215d51"), "name" : "user2", "age" : 2 } { "_id" : ObjectId("5032d0b73142123b5a215d52"), "name" : "user3", "age" : 3 } { "_id" : ObjectId("5032d0b73142123b5a215d56"), "name" : "user7", "age" : 7 } { "_id" : ObjectId("5032d0b73142123b5a215d57"), "name" : "user8", "age" : 8 } { "_id" : ObjectId("5032d0b73142123b5a215d58"), "name" : "user9", "age" : 9 } { "_id" : ObjectId("5032d0b73142123b5a215d59"), "name" : "user10", "age" : 10 } > |
6. $nor跟$or
> db.c1.find({$or:[{name:"user2"},{name:"user3"}]}) { "_id" : ObjectId("5032d0b73142123b5a215d51"), "name" : "user2", "age" : 2 } { "_id" : ObjectId("5032d0b73142123b5a215d52"), "name" : "user3", "age" : 3 } > db.c1.find({$nor:[{name:"user2"},{name:"user3"},{name:"user4"},{name:"user5"}]}) { "_id" : ObjectId("5032d0b73142123b5a215d50"), "name" : "user1", "age" : 1 } { "_id" : ObjectId("5032d0b73142123b5a215d55"), "name" : "user6", "age" : 6 } { "_id" : ObjectId("5032d0b73142123b5a215d56"), "name" : "user7", "age" : 7 } { "_id" : ObjectId("5032d0b73142123b5a215d57"), "name" : "user8", "age" : 8 } { "_id" : ObjectId("5032d0b73142123b5a215d58"), "name" : "user9", "age" : 9 } { "_id" : ObjectId("5032d0b73142123b5a215d59"), "name" : "user10", "age" : 10 } > db.c1.find({$or:[{name:"user2"},{age:8}]}) { "_id" : ObjectId("5032d0b73142123b5a215d51"), "name" : "user2", "age" : 2 } { "_id" : ObjectId("5032d0b73142123b5a215d57"), "name" : "user8", "age" : 8 } > |
7. $size
$size操作将会查询数组长度等于输入参数的数组,例子:
> db.c2.find(); { "_id" : ObjectId("5032d6a63142123b5a215d5a"), "a" : [ 123, 1, 2, 3, 4 ] } { "_id" : ObjectId("50337a8aed4213674aebade4"), "b" : [ 568, 89, 52 ] } > db.c2.find({a:{$size:4}}) > db.c2.find({a:{$size:5}}) { "_id" : ObjectId("5032d6a63142123b5a215d5a"), "a" : [ 123, 1, 2, 3, 4 ] } |
本文链接:http://www.656463.com/portal.php?mod=view&aid=78,转载请注明出处
相关推荐
内容概要:本文详细介绍了基于MATLAB GUI界面和卷积神经网络(CNN)的模糊车牌识别系统。该系统旨在解决现实中车牌因模糊不清导致识别困难的问题。文中阐述了整个流程的关键步骤,包括图像的模糊还原、灰度化、阈值化、边缘检测、孔洞填充、形态学操作、滤波操作、车牌定位、字符分割以及最终的字符识别。通过使用维纳滤波或最小二乘法约束滤波进行模糊还原,再利用CNN的强大特征提取能力完成字符分类。此外,还特别强调了MATLAB GUI界面的设计,使得用户能直观便捷地操作整个系统。 适合人群:对图像处理和深度学习感兴趣的科研人员、高校学生及从事相关领域的工程师。 使用场景及目标:适用于交通管理、智能停车场等领域,用于提升车牌识别的准确性和效率,特别是在面对模糊车牌时的表现。 其他说明:文中提供了部分关键代码片段作为参考,并对实验结果进行了详细的分析,展示了系统在不同环境下的表现情况及其潜在的应用前景。
嵌入式八股文面试题库资料知识宝典-计算机专业试题.zip
嵌入式八股文面试题库资料知识宝典-C and C++ normal interview_3.zip
内容概要:本文深入探讨了一款额定功率为4kW的开关磁阻电机,详细介绍了其性能参数如额定功率、转速、效率、输出转矩和脉动率等。同时,文章还展示了利用RMxprt、Maxwell 2D和3D模型对该电机进行仿真的方法和技术,通过外电路分析进一步研究其电气性能和动态响应特性。最后,文章提供了基于RMxprt模型的MATLAB仿真代码示例,帮助读者理解电机的工作原理及其性能特点。 适合人群:从事电机设计、工业自动化领域的工程师和技术人员,尤其是对开关磁阻电机感兴趣的科研工作者。 使用场景及目标:适用于希望深入了解开关磁阻电机特性和建模技术的研究人员,在新产品开发或现有产品改进时作为参考资料。 其他说明:文中提供的代码示例仅用于演示目的,实际操作时需根据所用软件的具体情况进行适当修改。
少儿编程scratch项目源代码文件案例素材-剑客冲刺.zip
少儿编程scratch项目源代码文件案例素材-几何冲刺 转瞬即逝.zip
内容概要:本文详细介绍了基于PID控制器的四象限直流电机速度驱动控制系统仿真模型及其永磁直流电机(PMDC)转速控制模型。首先阐述了PID控制器的工作原理,即通过对系统误差的比例、积分和微分运算来调整电机的驱动信号,从而实现转速的精确控制。接着讨论了如何利用PID控制器使有刷PMDC电机在四个象限中精确跟踪参考速度,并展示了仿真模型在应对快速负载扰动时的有效性和稳定性。最后,提供了Simulink仿真模型和详细的Word模型说明文档,帮助读者理解和调整PID控制器参数,以达到最佳控制效果。 适合人群:从事电力电子与电机控制领域的研究人员和技术人员,尤其是对四象限直流电机速度驱动控制系统感兴趣的读者。 使用场景及目标:适用于需要深入了解和掌握四象限直流电机速度驱动控制系统设计与实现的研究人员和技术人员。目标是在实际项目中能够运用PID控制器实现电机转速的精确控制,并提高系统的稳定性和抗干扰能力。 其他说明:文中引用了多篇相关领域的权威文献,确保了理论依据的可靠性和实用性。此外,提供的Simulink模型和Word文档有助于读者更好地理解和实践所介绍的内容。
嵌入式八股文面试题库资料知识宝典-2013年海康威视校园招聘嵌入式开发笔试题.zip
少儿编程scratch项目源代码文件案例素材-驾驶通关.zip
小区开放对周边道路通行能力影响的研究.pdf
内容概要:本文探讨了冷链物流车辆路径优化问题,特别是如何通过NSGA-2遗传算法和软硬时间窗策略来实现高效、环保和高客户满意度的路径规划。文中介绍了冷链物流的特点及其重要性,提出了软时间窗概念,允许一定的配送时间弹性,同时考虑碳排放成本,以达到绿色物流的目的。此外,还讨论了如何将客户满意度作为路径优化的重要评价标准之一。最后,通过一段简化的Python代码展示了遗传算法的应用。 适合人群:从事物流管理、冷链物流运营的专业人士,以及对遗传算法和路径优化感兴趣的科研人员和技术开发者。 使用场景及目标:适用于冷链物流企业,旨在优化配送路线,降低运营成本,减少碳排放,提升客户满意度。目标是帮助企业实现绿色、高效的物流配送系统。 其他说明:文中提供的代码仅为示意,实际应用需根据具体情况调整参数设置和模型构建。
少儿编程scratch项目源代码文件案例素材-恐怖矿井.zip
内容概要:本文详细介绍了基于STM32F030的无刷电机控制方案,重点在于高压FOC(磁场定向控制)技术和滑膜无感FOC的应用。该方案实现了过载、过欠压、堵转等多种保护机制,并提供了完整的源码、原理图和PCB设计。文中展示了关键代码片段,如滑膜观测器和电流环处理,以及保护机制的具体实现方法。此外,还提到了方案的移植要点和实际测试效果,确保系统的稳定性和高效性。 适合人群:嵌入式系统开发者、电机控制系统工程师、硬件工程师。 使用场景及目标:适用于需要高性能无刷电机控制的应用场景,如工业自动化设备、无人机、电动工具等。目标是提供一种成熟的、经过验证的无刷电机控制方案,帮助开发者快速实现并优化电机控制性能。 其他说明:提供的资料包括详细的原理图、PCB设计文件、源码及测试视频,方便开发者进行学习和应用。
基于有限体积法Godunov格式的管道泄漏检测模型研究.pdf
嵌入式八股文面试题库资料知识宝典-CC++笔试题-深圳有为(2019.2.28)1.zip
少儿编程scratch项目源代码文件案例素材-几何冲刺 V1.5.zip
Android系统开发_Linux内核配置_USB-HID设备模拟_通过root权限将Android设备转换为全功能USB键盘的项目实现_该项目需要内核支持configFS文件系统
C# WPF - LiveCharts Project
少儿编程scratch项目源代码文件案例素材-恐怖叉子 动画.zip
嵌入式八股文面试题库资料知识宝典-嵌⼊式⼯程师⾯试⾼频问题.zip