`
xiaozhiwz
  • 浏览: 16239 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

mongodb学习总结

阅读更多

配置服务所需命令:
mongod --dbpath "\"d:\mongodb\data\db\"" --logpath "\"d:\mongodb\data\log\"" --install

java操作mongodb实现CRUD
http://my.oschina.net/chen106106/blog/49068
http://blog.163.com/wm_at163/blog/static/132173490201110254257510/
http://blog.csdn.net/itbasketplayer/article/details/8086061

spring集成mongodb时一定要统一spring-data-mongodb和spring-data-commons两个jar包的版本,并且spring的版本也要符合才行。

 

1.变换数据库
use [databasename]

2.insert创建数据库内容
post = {"title" : "My Blog Post",
"content":"Here's my blog post.",
"date":new Date()}

post = {"title" : "My Blog Post1",
"content":"Here's my blog post1.",
"date":new Date()}

将文档插入到集合中:
db.blog.insert(post)

3.查看集合中的文档
db.blog.find()
查看一个文档
db.blog.findOne()

4.更新文档
第一步修改变量post,增加“comments”键:
post.comments = []
db.blog.update({title:"My Blog Post"},post)

5.删除
db.blog.remove({title:"My Blog Post"})

6.获得集合名
db.getCollection("blog")

7遍历集合
var collections = {"posts","comments","authors"};

for(i in collections){
    doStuff(db.blog[collections[i]]);
}

for i in range(1000000):
    collection.insert({"foo":"bar","baz":i,"z":10-i});

8文档替换的例子
原文档
{
 "name":"joe",
 "friends":32,
 "enemies":2
}
修改后的文档
{
 "username":"joe",
 "relationships":
  {
   "friends":32,
   "enemies":2
  }
}

用update替换文档:
 var joe = db.users.findOne({"name":"joe"});
 joe.relationships = {"friends":joe.friends,"enemies":joe.enemies};
 
 joe.username = joe.name;
 delete joe.friends;
 delete joe.enemies;
 delete joe.name;

 db.users.update({"name":"joe"},joe)

9使用修改器
网站计数器:
{
 "utl":"www.baidu.com",
 "pageviews":52
}

db.analytics.update({"url":"www.baidu.com"},{"$inc":{"pageviews":1}})

  (1)"$set"修改器入门
 {
  "name":"joe",
  "age":"30",
  "sex":"male"
  "location":"Wisconsin"
 }

用户可以增加喜欢的书
  db.users.update({"name":"joe"},{"$set":{"favorite book":"war and peace"}})

用户喜欢另外的书籍
  db.users.update({"name":"joe"},{"$set":{"favorite book":"green eggs and ham"}})

用户喜欢一堆书
db.users.update({"rname":"joe"},{"$set":{"favorite book":["green eggs and ham","war and peace","cat's cradle"]}})

用户不喜欢书了
db.users.update({"name":"joe"}),{"$unset":{"favorite book":1}}

$set修改内嵌文档:
{
 "title":"a blog post",
 ...
 "author":{
  "name":"joe",
  "email":"joe163.com"
  }
}
 
db.blog.posts.update({"author.name":"joe"},{"$set":{"author.name":"joe schmoe"}})

增加或者减少修改器:$inc
db.games.insert({"game":"pinball","user":"joe"})
db.games.update({"game":"pinball","user":"joe"},{"$inc":{"score":50}})
db.games.update({"game":"pinball","user":"joe"},{"$inc":{"score":10000}})

数组修改器:
db.blog.posts.findOne()
{
 "title":"",
 "content":"..."
}

添加评论为数组成员:
db.blog.posts.update({"title":"My Blog Post"},{"$push":{"comments":{"name":"jim","email":"jim163.com","content":"nice"}}})
再添加一条评论:
db.blog.posts.update({"title":"My Blog Post"},{"$push":{"comments":{"name":"Tom","email":"Tom163.com","content":"good post"}}})

$addToSet修改器添加到数组中避免重复
db.users.update({"name":"joe"},{"$addToSet":{"emails":"joe@163.com"}})
db.users.update({"name":"joe"},{"$addToSet":{"emails":"joe@mail.com"}})

$addToSet和$each组合实现添加多个数组成员
db.users.update({"name":"joe"},{"$addToSet":{"emails",{"$each":["joe@163.com","joe@126.com","joe@mail.com","joe@hot.com"]}}})

删除数组元素修改器:$pop
可以从数组任何一端删除元素
从数组末尾删除一个元素{$pop:{key:1}},从头部删除{$pop:{key:-1}}

删除特定数组中特定的数组:$pull

数组的定位修改器:定位符号("$")
db.blog.update({"name":"mary"},{"$inc":{"comments.0.votes":1}})

查询修改
db.blog.update({"name":"mary","comments.name":"Jim"},{"$set":{"comments.$.name":"Tom"}})

10修改器速度

11upsert
要是没有要更新的文档,就创建文档

12save Shell帮助程序
var x = db.foo.findOne()
x.num = 42

db.foo.save(x)

13更新多个文档
要使符合所有的文档进行更新,就使得第四个参数设为true
例:给所有特定日期过生日的用户一份礼物
db.users.update({"birthdaty":"10/13/1978"},
    {"$set":{"gift":"Happy Birthday"}},false,true)

14查询
  制定返回的键:
  db.users.find({},{"name":1,"_id":0})

  查询条件:
  $lt    $lte    $gt   $gte   $ne
  <      <=      >     >=     !=

db.users.find({"age":{"$gte":18,"$lte":30}})

db.users.find({"name":{"$ne":"joe"}})

  $in查询以及 $nin
  db.raffle.find({"ticket_no":{"$in":[725,542,390]}})

  $or查询:
  db.raffle.find({"$or":[{"ticket_no":{"$in":[725,542,390]}},{"winner":true}]})

  $not和$mod
  db.users.find({"id_num":{"$mod":[5,1]}})//将查到的值除以给定的值(5)余    数是(1)就返回id_num,返回1,6,11,16...
  $not与$mod相反
  db.users.find({"id_num":{"$not":{"$mod":[5,1]}}});

  正则表达式:
  db.users.find({"name":/joe/i});//不区分大小写查找joe
  db.users.find({"name":/joey?/i});//

  查询数组:$all查询器
  db.food.find({"fruit":{"$all":["apple","banana"]}})//查询既有apple也有    banana的文档
 
  数组下标查询:db.food.find({"fruit.2":"peach"});

  $slice返回特定的数组个数
  db.food.find({"size":{"$gt":4}},{"fruit":{"$slice":3}})
  db.food.find({"_id":1},{"fruit":{"$slice":[2,3]}}) //2是位置,3是偏移量

  查询内嵌文档:
  运用“.”表示法来查询内嵌文档:db.people.find  ({"name.first":"Joe","name.last":"Schmoe"})

  db.blog.find({"comments":{"$elemMatch":{"author":"Joe","score":  {"$gte":5}}}}) //内嵌数组查询


  (注明:只有在走投无路时才考虑用where查询,因为他的效率太低。)
  $where强大的查询
  db.foo.insert({"apple":1,"banana":6,"peach":3})
  db.foo.insert({"apple":8,"spinach":4,"watermelon":4})
  返回其中连个值相等的文档:
  db.foo.find({"$where":function(){
   for(var current in this){
    for(var other in this){
     if(current != other && this[current] == this  [other]){
 return true;
  }
}
}
  return false;
}});

 

第五章  索引
1.当查询中仅适用一个键时,可以对改建建立索引,以提高查询速度。
如:db.people.find({"username":"mark"});
建立索引使用ensureIndex方法:db.people.ensureIndex({"username":1})

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    MONGODB学习总结入门篇.pdf

    MongoDB学习总结入门篇.pdf MongoDB是一个基于分布式文件存储的数据库,旨在为WEB应用提供可扩展的高性能数据存储解决方案。下面将对MongoDB的基本概念、特点、使用原理和基本操作进行详细介绍。 1. MongoDB基本...

    Morphia和MongoDB学习总结<三>

    **标题:“Morphia和MongoDB学习总结&lt;三&gt;”** 在本文中,我们将深入探讨Morphia,一个用于Java的MongoDB对象数据映射(ODM)库,以及它如何与MongoDB数据库进行交互。Morphia简化了在MongoDB中存储和检索Java对象的...

    MongoDB学习总结笔记

    以下是对MongoDB学习的一些关键知识点的详细解释: 1. **MongoDB的基本概念**:MongoDB以集合(Collections)的形式存储数据,集合相当于关系型数据库中的表。集合内包含文档(Documents),文档是JSON格式的数据...

    mongodb学习总结.docx

    MongoDB 是一种流行的NoSQL数据库系统,以C++语言编写并开源。NoSQL数据库与传统的关系型数据库(RDBMS)不同,它不依赖于固定的表格模式,这使得NoSQL数据库在处理大规模、非结构化或半结构化数据时表现出色。...

    MongoDB学习总结

    关于MongoDB安装、部署、命令操作、PHP插件操作、复制集、分布式、Sharding框架。

    mongodb学习笔记和mongodb权威指南

    最后,`mongodb总结`可能是作者对MongoDB学习过程中的关键点、难点和实践经验的提炼。这可能包括一些常见问题的解决方案,最佳实践的汇总,以及在实际项目中应用MongoDB的经验分享。 总的来说,这些资源将帮助学习...

    mongodb总结

    通过深入学习和实践上述知识点,可以更好地理解和运用MongoDB来构建高效、可靠的数据存储和处理系统。提供的文档如“mongodb常用命令.doc”和“mongodb使用指南.ppt”会进一步细化这些概念,并可能包含更多实用技巧...

    mongodb数据库的学习与总结

    MongoDB是一种分布式文档型数据库,它以其灵活性、高性能和易扩展性在现代Web应用程序中备受青睐。本篇文章将深入探讨MongoDB的核心概念、主要特点、安装配置、数据模型、查询操作以及高级特性。 1. MongoDB核心...

    mongodb学习手册.pdf

    ### MongoDB学习手册知识点总结 #### 一、MongoDB简介 - **名称来源**:MongoDB的名称来源于英文单词“humongous”,意指巨大的。这个名字反映了MongoDB处理大规模数据的能力。 - **发展历史**:MongoDB自2010年...

    mongoDB学习 命令 安装

    MongoDB 是一种流行的开源、高性能、无模式的文档型数据库,设计用于处理和存储大量数据。...通过其直观的命令行接口和强大的查询语言,MongoDB 提供了一个易于学习和使用的环境,使得开发者可以轻松地管理和操作数据。

    MongoDB总结,文件为md 格式 可以利用Typora打开文件

    通过阅读这份"MongoDB总结"文件,学习者将能够掌握MongoDB的基本概念、操作以及在实际项目中的应用,为进一步学习和使用MongoDB打下坚实基础。利用Markdown格式,内容易于阅读和理解,结合Typora等编辑器,学习体验...

    MongoDB学习笔记思维导图

    总结的MongoDB的学习笔记,基本上包括了MongoDB的方方面面,每个知识点,都有示例代码,有需要的朋友,可以下载下来进一步补充完善。

    mongodb 学习文档

    总结,MongoDB以其独特的文档存储方式、强大的查询能力以及优秀的可扩展性成为现代应用的首选数据库之一。对于初学者,理解其核心概念、操作方法和分片机制是迈向MongoDB专家的第一步。通过不断的实践和学习,开发者...

    Mongodb学习资料(Mongodb权威指南+实战班克)

    6. 最佳实践:总结MongoDB在设计、部署和运维中的最佳实践,避免常见的陷阱和误区。 通过这两部分的学习,你不仅可以掌握MongoDB的基本操作,还能了解到如何在实际开发中高效地运用MongoDB,提升项目质量和性能。...

    MongoDB学习分享.pptx

    ### MongoDB学习分享知识点详解 #### 一、NoSQL简介与MongoDB概述 ##### NoSQL概念: - **定义**:NoSQL最初是指“Not Only SQL”,但现在更多地被理解为“Not Only SQL”。这类数据库不再遵循传统的关系型数据库...

    MongoDB学习手册

    以上内容总结了《MongoDB学习手册》的主要知识点,涵盖了MongoDB的基础概念、特性、应用场景、数据类型、索引、主从同步、分片和集群、基本操作、Shell控制台使用方法以及安全与认证等方面,为读者提供了全面的学习...

    mongodb 学习记录

    ### MongoDB学习知识点总结 #### 一、启动MongoDB服务与Web监控服务 - **启动MongoDB服务**: 使用`./mongod --dbpath=/data/db --rest`命令来启动MongoDB服务。这里`--dbpath=/data/db`指定了MongoDB的数据文件存储...

Global site tag (gtag.js) - Google Analytics