`
zzzzzz5530041
  • 浏览: 35407 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

mongo DB 第一天

 
阅读更多

最近没事看来一下mongoDB,貌似很牛逼的样子.因为他不像通常的关系型数据库那么多的约束.而且语法看上去和js一样.

mongod --dbpath C:\zhuyang\zhuyang\mongodb\mongodb\db

---insert
db.person.insert({"name":"zhuyang","sex":"male")
db.person.insert({"name":"hello","sex":"world"})

person = {"name":"nametest","sex":"sextest"}
db.person.insert(person)
---find
db.person.find()
db.person.find({"name":"nametest"})
db.person.findOne()
--update
db.person.update({"name":"nametest"},{"sex":"testupdate"})

--remove
db.person.remove({"name":"nametest"})
db.person.remove({"sex":"testupdate"})


--------------some command
help  ----see help doc
db.help();  --to see some command of db level
db.foo.help()  ----help of collections
to see the funcion implementation can use function name directly. eg: db.foo.update





---------insert to doc -------------
--insert one record 
db.foo.insert({"firstname":"zhu"}) --after this sentence , db will add another _id key(if doesnt defined) and save to doc.see below 
db.foo.insert({"lastname":"yang"})
db.foo.insert({"firstname":"chen"})
> db.foo.find()
{ "_id" : ObjectId("52ce585fe2e2fd0a66329ee3"), "firstname" : "zhu" }

------------batch insert
use mongoimport
file<4MB, need a field name _id

-----------remove doc
 db.foo.remove()  ---remove all 
 db.foo.remove({"firstname":"chen"}) ---remove one record

------update doc ------
see below 
db.user.insert(
	{
		"firstname":"zhu",
		"lastname":"yang",
		"friends":32,
		"enemies":2
	}
)

  

CHANGE TO 

{
		"username":"zhuyang",
		"relation":
		{
			"friends":32,
			"enemies":2
		}
	}
	
var zhuyang = db.user.findOne({"firstname":"zhu"})
zhuyang.relation={
			"friends":zhuyang.friends,
			"enemies":zhuyang.enemies 
}
zhuyang.username="zhuyang"
delete zhuyang.firstname
delete zhuyang.lastname
delete zhuyang.friends
delete zhuyang.enemies
db.user.update({"firstname":"zhu"},zhuyang)



 $set 修改器入门
 
db.user.insert(
	{
		"name":"joe",
		"age":30,
		"sex":"male",
		"location":"shanghai"
	}
)

//想要添加一个新的字段favorite book
//可用下面 2种办法
//1. 用update()
var joe = db.user.findOne({"name":"joe"})
joe.favoritebook="java";
db.user.update({"name":"joe"},joe);

//2. 使用修改器$set
db.user.update(
	{
		"name":"joe"
	},
	{
		"$set":{
		"favoritebook":"c++"
	}
	}
)

//也可以将favorite book改成一个数组

db.user.update(
	{
		"name":"joe"
	},
	{
		"$set":{
			"favoritebook":[
				"c++","c##","perl"
			]
	}
	}
)


//使用$unset 去移除
db.user.update(
	{
		"name":"joe"
	},
	{
		"$unset":{
			"favoritebook":1
		}
	}
)
//使用$set 修改内嵌文档
db.blog.posts.insert({
	"title":"java test",
	"content":"this is content",
	"author":{
		"name":"sb",
		"mail":"hello@gmail.com"
	}
}
)

//修改作者名字为joe zhu
db.blog.posts.update(
	{
		"author.name":"sb"
	},
	{
		"$set":
		{
			"author.name":"joe zhu"
		}
	}
)

//$inc 修改器用来增加已有键的值,或者在键不存在的时候创建
db.games.insert(
	{
		"game":"pinball",
		"user":"joe"
	}
)
//如果小球碰到了砖块,就会给玩家加分.分数随便给,这里把玩家的基数分数设做50.使用$inc  给玩家加50


db.games.update(
	{
		"game":"pinball",
		"user":"joe"
	},
	{
		"$inc":{
			"score":50
		}
	}
)
//之前分数键是不存在的,所以用$inc创建了一个score键,并加量50
//如果小球落到指定位置,那么则加上1000分.

db.games.update(
	{
		"game":"pinball",
		"user":"joe"
	},
	{
		"$inc":{
			"score":1000
		}
	}
)
//现在的分数变成了50+1000=1050了 


//数组修改器
//如果指定的键已经存在,那么$push就会向已有的数组末尾加上一个元素,否则就会创建一个新的数组.

db.blog.posts.findOne({"author.mail":"hello@gmail.com"});

{
        "_id" : ObjectId("52cf9f70cae129f46ff6fa5d"),
        "author" : {
                "mail" : "hello@gmail.com",
                "name" : "joe zhu"
        },
        "content" : "this is content",
        "title" : "java test"
}

//比如现在要添加一个数组comments键.并发布一条评论:
db.blog.posts.update(
	{
		"author.mail":"hello@gmail.com"
	},
	{
		"$push":{
			comments:{
			"name":"zhu",
			"email":"zzzzzz5530041@gmail.com",
			"content":"nice one"
			}
		}
	}
);

> db.blog.posts.find()
{ "_id" : ObjectId("52cf9f70cae129f46ff6fa5d"), "author" : { "mail" : "hello@gmail.com", "name" : "joe zhu" }, "comments" : [   {       "name" : "zhu",         "email" : "zzzzzz5530041@gmail.com",
"content" : "nice one" } ], "content" : "this is content", "title" : "java test" }

//如果还要添加一条评论
db.blog.posts.update(
	{
	"author.mail":"hello@gmail.com"
	},
	{
		"$push":{
			"comments":{
				"name":"yang",
				"email":"ss@gmail.com",
				"content":"nice two"
			}
		}
	}
)


db.blog.posts.findOne()

      "_id" : ObjectId("52cf9f70cae129f46ff6fa5d"),
      "author" : {
              "mail" : "hello@gmail.com",
              "name" : "joe zhu"
      },
      "comments" : [
              {
                      "name" : "zhu",
                      "email" : "zzzzzz5530041@gmail.com",
                      "content" : "nice one"
              },
              {
                      "name" : "yang",
                      "email" : "ss@gmail.com",
                      "content" : "nice two"
              }
      ],
      "content" : "this is content",
      "title" : "java test"


使用$addToSet添加新的数组元素
db.blog.posts.update(
	{
	"author.mail":"hello@gmail.com"
	},
	{
		"$addToSet":{
				"comments":{
				"name":"yang1",
				"email":"ss@hot.com",
				"content":"nice 3"
			}
		}
	}
)


使用$addToSet和$each添加多个元素

db.user.update(
	{
		"_id":ObjectId("52cf9c6dcae129f46ff6fa5c")
	},
	{
		"$addToSet":{
			"favoritebook":{
				"$each":[
					"javascript",
					"mongo in action"
				]
			}
		}
	}
)

//有几个从数组中删除元素的方法,如果把数组看作是一个栈或者队列.可以用$pop ,这个修改器可以从数组任何一端进行删除{$pop:{key:1}}从数组末端删除1个元素,{$pop:{key:-1}}从数组头删除1个元素
db.lists.insert(
	{
			"todo":[
				"dishes",
				"laundry",
				"dry cleaning"
			]
		}
)
db.lists.update(
		{
				"_id":ObjectId("52cfac11cae129f46ff6fa5f")
		},
		{
				"$pop":{
						"todo":-1
				}
		}
)
//有时基于特定条件来进行删除,而不是依据位置,"$pull"可以做到

db.lists.update(
		{
				"_id":ObjectId("52cfad13cae129f46ff6fa60")
		},
		{
				"$pull":{
						"todo":"laundry"
				}
		}
)

 //数组的定位修改器
 //若是数数组有多个值,而我们只想对其中一部分做修改.通过位置或者定位操作符$
 //数组都是从0开始的,我们可以通过下表进行访问元素
 > db.blog.posts.findOne()
{
        "_id" : ObjectId("52cfae34cae129f46ff6fa61"),
        "author" : {
                "name" : "sb",
                "mail" : "hello@gmail.com"
        },
        "comments" : [
                {
                        "name" : "yang",
                        "email" : "ss@gmail.com",
                        "content" : "nice two",
                        "vote" : 5
                },
                {
                        "name" : "yang1",
                        "email" : "ss@gmail.com",
                        "content" : "nice 1",
                        "vote" : 6
                }
        ],
        "content" : "this is content",
        "title" : "java test"
}

//如果想要增加其中一个元素的投票数
db.blog.posts.update(
	{
		"_id":	ObjectId("52cfae34cae129f46ff6fa61")
	},
	{
		"$inc":{//这里的$inc用来做增加,也就是说vote数量将会在原有基础上增加100
				"comments.0.vote":100//comments.0第1个元素
		}
	}
)

//但是在很多情况下我们并不知道每一个元素的下标,这样就不能通过位置来操作, 而是用$来操作
db.blog.posts.update(
	{
		"comments.name":	"yang" //若有多个匹配,则只会操作一个
	},
	{
		"$set":{//直接设值
				"comments.$.vote":300 
		}
	}
)
 
 
//upsert 是一种特殊的更新方式,如果没文档符合更新条件,那么就会以这个条件和更新数据创建一个新的文档
db.user.update(
	{
		"edu":"gaozhong"//文档中没有edu==gaozhong
	},
	{
		"$set":{
				"age":100
		}
	},
	true//true表名这是一个upsert方式的更新
)
 db.user.find()
 { "_id" : ObjectId("52cfb32dedd18a0edc7db7b0"), "age" : 100, "edu" : "gaozhong" }
 
 

 

 

 

分享到:
评论

相关推荐

    mern-project

    第一天 Created Routes using GET and setup the Server 第二天 Added Middleware 第三天 Connectivity with Mongo DB 第四天 Added Schema / Interface 第五天 Added Routes for different Pages Tested Post ...

    weebly:迷你威布利

    第一天:熟悉这个项目。 仔细阅读要求,常见问题和资产。 考虑该项目的体系结构,是否使用Ember / Angular框架。 我不清楚要求,因此我向Kate发送了一封电子邮件,询问是将前端和后端分开保存还是作为一个项目一起...

    MongoDB 中聚合统计计算--$SUM表达式

    这将返回一个结果集,其中包含了每年每一天的销售额总和。 在上述示例中,`$group`操作符用于将文档分组,并通过`_id`字段定义分组的依据。`$sum`表达式则用于计算指定字段的总和。在第二个例子中,我们还使用了`$...

    MongoDB案例2.docx

    "content" : "心情超级很好,这是美好的一天。。。", "createTime" : ISODate("2018-05-24T12:45:43.302+08:00"), "userName" : "caifu", "attachments" : [ {"url" : "http://test123/123.jpg", "name" : "123...

    计算机硬件控制_驱动级键盘鼠标同步_PS2接口UDP协议多机协同_基于rabirdwinio和pynput的跨设备输入共享系统_实现多台Windows电脑的键盘鼠标同步操作_支持.zip

    计算机硬件控制_驱动级键盘鼠标同步_PS2接口UDP协议多机协同_基于rabirdwinio和pynput的跨设备输入共享系统_实现多台Windows电脑的键盘鼠标同步操作_支持

    嵌入式八股文面试题库资料知识宝典-TCPIP协议栈.zip

    嵌入式八股文面试题库资料知识宝典-TCPIP协议栈.zip

    少儿编程scratch项目源代码文件案例素材-开膛手杰克.zip

    少儿编程scratch项目源代码文件案例素材-开膛手杰克.zip

    基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型

    基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型,个人经导师指导并认可通过的高分设计项目,评审分99分,代码完整确保可以运行,小白也可以亲自搞定,主要针对计算机相关专业的正在做大作业的学生和需要项目实战练习的学习者,可作为毕业设计、课程设计、期末大作业,代码资料完整,下载可用。 基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现遥感图像滑坡识别源码+数据集+训练好的模型基于深度学习CNN网络+pytorch框架实现

    电力弹簧技术在主动配电网规划与运行优化调度中的应用研究

    内容概要:本文详细探讨了电力弹簧技术在主动配电网规划及运行优化调度中的应用。首先介绍了电力弹簧技术作为智能电网调控手段的优势,如自适应性强、响应速度快、节能环保等。接着阐述了主动配电网规划的目标和策略,包括优化电网结构、提高能源利用效率和降低故障风险。随后讨论了运行优化调度的原则和方法,强调了实时监测、智能调度策略以及优化调度模型的重要性。最后通过实际案例分析展示了电力弹簧技术在提升电网稳定性、可靠性和能效方面的显著效果,展望了其广阔的应用前景。 适合人群:从事电力系统规划、运行管理的研究人员和技术人员,以及对智能电网感兴趣的学者和学生。 使用场景及目标:适用于希望深入了解电力弹簧技术及其在主动配电网规划和运行优化调度中具体应用的专业人士。目标是掌握电力弹簧技术的工作原理、优势及其在实际项目中的实施方法。 其他说明:本文不仅提供了理论分析,还有具体的案例支持,有助于读者全面理解电力弹簧技术的实际应用价值。

    嵌入式八股文面试题库资料知识宝典-C语言思维导图.zip

    嵌入式八股文面试题库资料知识宝典-C语言思维导图.zip

    电路教学与科研案例的结合—以最大功率传输定理为例.pdf

    电路教学与科研案例的结合—以最大功率传输定理为例.pdf

    【HarmonyOS文件系统】分布式架构下的多设备协同与文件管理:构建万物互联新生态

    内容概要:本文深入介绍了HarmonyOS文件系统及其在万物互联时代的重要性。HarmonyOS自2019年发布以来,逐步覆盖多种智能设备,构建了庞大的鸿蒙生态。文件系统作为其中的“数字管家”,不仅管理存储资源,还实现多设备间的数据协同。文章详细介绍了常见的文件系统类型,如FAT、NTFS、UFS、EXT3和ReiserFS,各自特点和适用场景。特别强调了HarmonyOS的分布式文件系统(hmdfs),它通过分布式软总线技术,打破了设备界限,实现了跨设备文件的无缝访问。此外,文章对比了HarmonyOS与Android、iOS文件系统的差异,突出了其在架构、跨设备能力和安全性方面的优势。最后,从开发者视角讲解了开发工具、关键API及注意事项,并展望了未来的技术发展趋势和对鸿蒙生态的影响。 适合人群:对操作系统底层技术感兴趣的开发者和技术爱好者,尤其是关注物联网和多设备协同的用户。 使用场景及目标:①理解HarmonyOS文件系统的工作原理及其在多设备协同中的作用;②掌握不同文件系统的特性和应用场景;③学习如何利用HarmonyOS文件系统进行应用开发,提升跨设备协同和数据安全。 阅读建议:本文内容详实,涵盖了从基础概念到高级开发技巧的多个层次,建议读者结合自身需求,重点关注感兴趣的部分,并通过实践加深理解。特别是开发者可参考提供的API示例和开发技巧,尝试构建基于HarmonyOS的应用。

    嵌入式八股文面试题库资料知识宝典-海康嵌入式笔试题.zip

    嵌入式八股文面试题库资料知识宝典-海康嵌入式笔试题.zip

    三电平有源电力滤波器仿真:基于瞬时无功功率理论的双闭环控制与SVPWM调制技术

    内容概要:本文详细介绍了基于瞬时无功功率理论的三电平有源电力滤波器(APF)仿真研究。主要内容涵盖并联型APF的工作原理、三相三电平NPC结构、谐波检测方法(ipiq)、双闭环控制策略(电压外环+电流内环PI控制)以及SVPWM矢量调制技术。仿真结果显示,在APF投入前后,电网电流THD从21.9%降至3.77%,显著提高了电能质量。 适用人群:从事电力系统研究、电力电子技术开发的专业人士,尤其是对有源电力滤波器及其仿真感兴趣的工程师和技术人员。 使用场景及目标:适用于需要解决电力系统中谐波污染和无功补偿问题的研究项目。目标是通过仿真验证APF的有效性和可行性,优化电力系统的电能质量。 其他说明:文中提到的仿真模型涉及多个关键模块,如三相交流电压模块、非线性负载、信号采集模块、LC滤波器模块等,这些模块的设计和协同工作对于实现良好的谐波抑制和无功补偿至关重要。

    基于环比增长的销售统计分析——2019年中青杯全国数学建模竞赛C题.pdf

    基于环比增长的销售统计分析——2019年中青杯全国数学建模竞赛C题.pdf

    嵌入式八股文面试题库资料知识宝典-linux面试题.zip

    嵌入式八股文面试题库资料知识宝典-linux面试题.zip

    嵌入式八股文面试题库资料知识宝典-linux常见面试题.zip

    嵌入式八股文面试题库资料知识宝典-linux常见面试题.zip

    基于Matlab的小电流接地系统单相故障仿真分析及其应对策略研究

    内容概要:本文探讨了小电流接地系统在配电网络中的应用,特别是在单相故障情况下的仿真分析。文中介绍了小电流接地系统的背景和发展现状,重点讨论了两种常见的接地方式——中性点不接地和中性点经消弧线圈接地。利用Matlab作为仿真工具,作者构建了详细的电路模型,模拟了单相故障的发生过程,并通过多个结果图表展示了故障电流、电压波形及系统运行状态。此外,文章还包括了详细的设计说明书和PPT介绍,帮助读者全面理解仿真过程和技术细节。 适合人群:从事电力系统研究、维护的技术人员,尤其是关注配电网络安全和稳定的工程师。 使用场景及目标:适用于希望深入了解小电流接地系统的工作原理和故障处理机制的专业人士。通过本研究,读者可以掌握如何使用Matlab进行电力系统仿真,评估不同接地方式的效果,优化配电网络的安全性能。 其他说明:随文附带完整的仿真工程文件、结果图、设计说明书及PPT介绍,便于读者进一步探索和实践。

    少儿编程scratch项目源代码文件案例素材-激烈的殴斗.zip

    少儿编程scratch项目源代码文件案例素材-激烈的殴斗.zip

    嵌入式八股文面试题库资料知识宝典-小米嵌入式软件工程师笔试题目解析.zip

    嵌入式八股文面试题库资料知识宝典-小米嵌入式软件工程师笔试题目解析.zip

Global site tag (gtag.js) - Google Analytics