准备工作:首先在maxh数据库的address集合中先插入数据

> db.address.insert({child_address:"gansu"})

WriteResult({ "nInserted" : 1 })
> db.address.insert({child_address:"lanzhou"})

WriteResult({ "nInserted" : 1 })

> db.address.find().pretty()
{ "_id" : ObjectId("5695c6395e085ed70afdd224"), "child_address" : "gansu" }
{ "_id" : ObjectId("5695c67b5e085ed70afdd225"), "child_address" : "lanzhou" }

然后将address的"_id"字段更新到user集合的name:"admin"记录中

> db.user.update({name:"admin"},{$set:{address_id:[ObjectId("5695c6395e085ed70af
dd224"),ObjectId("5695c67b5e085ed70afdd225")]}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> var result = db.user.find({"name":"admin"},{"address_id":1}).pretty()
> var addresses = db.address.find({"_id":{"$in":result["address_id"]}}).pretty()

> addresses
Error: error: {
"waitedMS" : NumberLong(0),
"ok" : 0,
"errmsg" : "$in needs an array",
"code" : 2
}错误原因:findOne()写成了find()

--------------------------------------------------------------------------------------------------------
> var result = db.user.findOne({"name":"admin"},{"address_id":1}).pretty()
2016-01-13T12:00:23.633+0800 E QUERY [thread1] TypeError: db.user.findOne(...
).pretty is not a function :
@(shell):1:18错误原因:findOne()后边好像不能使用pretty()

--------------------------------------------------------------------------------------------------------

> var result = db.user.findOne({"name":"admin"},{"address_id":1})
> result
{
"_id" : ObjectId("56946fba3a18f4867aecbcd1"),
"address_id" : [
ObjectId("5695c6395e085ed70afdd224"),
ObjectId("5695c67b5e085ed70afdd225")
]
}
> var result = db.user.findOne({"name":"admin"},{"address_id":1})这个1是什么?think,think -1也可以
> var addresses = db.address.find({"_id":{"$in":result["address_id"]}}).pretty()

> addresses
{ "_id" : ObjectId("5695c6395e085ed70afdd224"), "child_address" : "gansu" }
{ "_id" : ObjectId("5695c67b5e085ed70afdd225"), "child_address" : "lanzhou" }
>

> var result = db.user.findOne({"name":"admin"},{"address_id":-1})
> var addresses = db.address.find({"_id":{"$in":result["address_id"]}}).pretty()

> addresses
{ "_id" : ObjectId("5695c6395e085ed70afdd224"), "child_address" : "gansu" }
{ "_id" : ObjectId("5695c67b5e085ed70afdd225"), "child_address" : "lanzhou" }

学习mongo系列(十一)关系的更多相关文章

  1. 学习mongo系列(八)密码与权限

    一.设置密码及用户角色[1] > db.createUser(... {... user: "maxh",... pwd: "123",... roles ...

  2. 学习mongo系列(六)limit(munber),skip(number)

    > db.user.find().pretty(){ "_id" : ObjectId("56946fba3a18f4867aecbcd1"), &quo ...

  3. 学习mongo系列(一) win/mac安装 解析 连接

    一.安装mongo数据库 下载链接https://www.mongodb.org/downloads, 在执行如下命令的时候事先按照目录新建如下的目录:(如果数据库安装在D盘就在D盘的根目录下建)&q ...

  4. 学习mongo系列(十)MongoDB 备份(mongodump)与恢复(mongorerstore) 监控(mongostat mongotop)

    一.备份 在Mongodb中我们使用mongodump命令来备份MongoDB数据.该命令可以导出所有数据到指定目录中. mongodump命令可以通过参数指定导出的数据量级转存的服务器. mongo ...

  5. 学习mongo系列(九)索引,聚合,复制(副本集),分片

    一.索引 二.聚合 三.复制(副本集) 四.分片 尚未实践操作. 详见http://www.runoob.com/mongodb/mongodb-indexing.html

  6. 学习mongo系列(七)aggregate() ,$group() 管道

    aggregate()聚合,主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果.有点类似sql语句中的 count(*) 接上边的数据库: > db.user.aggregate ...

  7. 学习mongo系列(五) AND,$or,$type

    MongoDB OR 条件 MongoDB OR 条件语句使用了关键字 $or,语法格式如下: >db.col.find( { $or: [ {key1: value1}, {key2:valu ...

  8. 学习mongo系列(四) find().pretty() remove() 查询

    一.find() 方法以非结构化的方式来显示所有文档.如果你需要以易读的方式来读取数据,可以使用 pretty() 方法,语法格式如下:db.collection_name.find().pretty ...

  9. 学习mongo系列(三) update() save()

    一.update()方法 >db.user.update({"name":"user1"},{$set:{"title":" ...

随机推荐

  1. laravel redis

    安装配置redis服务器 $ wget http://download.redis.io/releases/redis-3.0.5.tar.gz $ tar xzf redis-.tar.gz $ c ...

  2. webstorm svn 报错

    webstorm    svn 报错Cannot run program "svn": CreateProcess error=2, The system cannot find ...

  3. tableView主从表在storyboard连线是 Selcetion Segue和Accessory Action的区别

    当按住Ctorl这样连线时会出现,当选择Selection Segue下面的push时,点击cell的任何位置都会跳转到下一个tableView,当选择Accessory Action的下面的push ...

  4. 《Linux内核设计与实现》CHAPTER5阅读梳理

    <Linux内核设计与实现>CHAPTER5阅读梳理 [学习时间:2.5hours] [学习内容:系统调用的概念.功能及实现:系统调用的创建和使用方法] CHAPTER5 系统调用 1.系 ...

  5. Progressive Scanning (逐行扫描) vs Interlaced Scanning (隔行扫描)

    source: http://sh.sina.com.cn/20041207/231443445.shtml 逐行扫描每一帧图像均是由电子束顺序地一行接着一行连续扫描而成.要得到稳定的逐行扫描图像,每 ...

  6. PHP 5.4 on CentOS/RHEL 6.4 and 5.9 via Yum

    PHP 5.4 on CentOS/RHEL 6.4 and 5.9 via Yum PHP 5.4.16 has been released on PHP.net on 6th June 2013, ...

  7. WORD自定义宏

    自定义快捷键 折叠所有标题 Word选项—自定义功能区—自定义键盘—不在功能区内的命令—ColllapseAllHeadings 展开所有标题 Word选项—自定义功能区—自定义键盘—不在功能区内的命 ...

  8. [Effective JavaScript 笔记]第68条:使用promise模式清洁异步逻辑

    构建异步API的一种流行的替代方式是使用promise(有时也被称为deferred或future)模式.已经在本章讨论过的异步API使用回调函数作为参数. downloadAsync('file.t ...

  9. Hibernate Criteria Restrictions

    HQL运算符 QBC运算符 含义 = Restrictions.eq() 等于equal <>  Restrictions.ne() 不等于not equal >  Restrict ...

  10. Grunt备忘录

    一.安装Grunt 应在全局环境下安装Grunt,以保障在任何目录下都能够正确找到grunt npm install grunt-cli -g 二.对已有Grunt基本目录结构文件进行操作 Grunt ...