`
zzzzzz5530041
  • 浏览: 34305 次
  • 性别: 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" }
 
 

 

 

 

分享到:
评论

相关推荐

    Mongo DB 3.2.5官方帮助文档

    Mongo DB 3.2.5官方帮助文档

    Mongo DB 可视化工具 robo3t-1.4.3

    Mongo DB 是一个流行的开源、基于文档的分布式数据库系统,它以JSON格式存储数据,适合处理大量半结构化和非结构化数据。可视化工具是管理和操作Mongo DB的重要辅助手段,能够帮助用户更直观地查看和操作数据库。...

    Mongo DB 客户端 破解版

    Mongo DB 客户端 破解版,保证可以使用。

    Mongo DB Training Material

    Mongo DB 基础培训资料,比较详细,是我同事整理总结的

    MONGO DB 安装包3

    MongoDB的实用性着实令人着迷。MongoDB并不去迎合所有人的全部需求。它在功能和复杂性之间取得很好的平衡,并且将原先十分复杂的任务大大简化。也就是说,它具备支撑今天主流web应用的关键功能:索引,复制,分片,...

    Mongo DB 安装,Windows下 Mongo DB 服务安装

    在Windows操作系统上安装MongoDB服务是开发或部署MongoDB应用的第一步。以下是对MongoDB在Windows上的安装过程以及如何配置服务的详细解释。 **一、MongoDB的下载与安装** 1. 首先,访问MongoDB的官方网站...

    mongo DB客户端破解版

    mongoDB客户端破解版使用方法: 解压后安装Installer-1.6.9下的Installer,然后把MongoVUE破解版目录下的MongoVUE拷贝到刚刚你安装的目录下,替换即可。

    MONGO DB 安装包1

    MongoDB的实用性着实令人着迷。MongoDB并不去迎合所有人的全部需求。它在功能和复杂性之间取得很好的平衡,并且将原先十分复杂的任务大大简化。也就是说,它具备支撑今天主流web应用的关键功能:索引,复制,分片,...

    MONGO DB 安装包2

    MongoDB的实用性着实令人着迷。MongoDB并不去迎合所有人的全部需求。它在功能和复杂性之间取得很好的平衡,并且将原先十分复杂的任务大大简化。也就是说,它具备支撑今天主流web应用的关键功能:索引,复制,分片,...

    CI框架mongo_db.php

    CI框架的mongo_db数据库扩展链接文件,有了它,CI框架链接mongo_db不在烦恼!

    sql-to-mongo-db-query-converter:sql-to-mongo-db-query-converter

    sql-to-mongo-db-query-converter sql-to-mongo-db-query-converter可帮助您基于SQL中提供的查询为MongoDb构建查询。玛文向com.github.vincentrussell:sql-to-mongo-db-query-converter添加依赖...

    mongo db demo

    在本"mongo db demo"中,我们将深入探讨MongoDB的基本概念、安装与配置、数据模型、查询操作以及一些高级特性。 一、MongoDB基本概念 1. 文档数据库:MongoDB基于文档存储,其数据模型是JSON格式的BSON(Binary ...

    mongo db linux安装包

    MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像...

    mongo-sample:用于教育目的的Mongo DB示例代码

    Mongo DB示例代码 这是简单的Rest API中的一些样例Mongo DB代码,该代码具有基本的CRUD终结点,以供参考。 安装 要运行此示例代码,请安装npm软件包并运行server.js文件。 npm install node server Mongo DB入门 ...

    node-mongodb-native, Mongo DB原生NodeJS驱动程序.zip

    node-mongodb-native, Mongo DB原生NodeJS驱动程序 描述官方的 MongoDB驱动程序。 在核心插件之上提供一个高级 API,这意味着最终用户。的MongoDB node.js-驱动程序什么地方文档http://mongodb.github.io

    mongo4ben:适用于Benerator的Mongo DB插件-开源

    Mongo4Ben是一个专门为Benerator设计的Mongo DB插件,它为开发者提供了一个便捷的途径,在Benerator项目中集成和操作Mongo DB数据库。这个插件的出现使得开发人员能够在Mongo数据库实例中进行数据的存储、更新和查询...

    Mongo DB增删改查命令

    switched to db myblog 1.3 列出所有集合 &gt; show collections articles replicationColletion sessions users wangduanduan 2 插入数据 insert(value) // 在已经存在的集合中插入数据 &gt; db.users.insert({name:'...

    php-embedded-mongo:启动嵌入式Mongo DB服务器并轻松运行PHPUnit集成测试

    该库会启动一个真正的Mongo DB服务器,因此您必须安装Java,然后使用composer安装该库。 composer install --save-dev php-embedded-mongo 快速样品 // Create and starts an embedded Mongo DB server $ ...

    阿里mongo同步工具mongo-shake

    总之,阿里mongo同步工具mongo-shake是MongoDB数据管理的一个强大工具,对于需要跨实例、跨集群同步数据的企业来说,它是一个值得信赖的选择。通过合理利用其功能,企业可以有效地保证数据一致性,提升系统稳定性,...

    dbstream-mongo:与数据库流API兼容的Mongo DB访问层

    与 API兼容的Mongo DB访问层 用法 var db = require ( "dbstream-mongo" ) ; var connection = db . connect ( "mongodb://127.0.0.1:27017/test" , { collection : "test" } ) ; // write or update var cursor = ...

Global site tag (gtag.js) - Google Analytics