mongodb-Mongodb中如何实现一对多?在一个文档中嵌套多个文档?

问题描述

Mongodb中如何实现一对多?在一个文档中嵌套多个文档?

如题,
我知道如下这样可以在文档中嵌入一个文档:

 db.insertdb.insert({_id:2,by:'测试',auther:{name:'小明',age:23}})

但不知怎么嵌入多个,还有如何在一个已有文档中新添一个子文档,求mongodb前辈告知,多谢!

解决方案

不是阿,你使用的是修改器,其实本质就是对象没有这个属性的时候那就新加入一个属性

我给你回答的是在这个对象的使用方面上文档对象 使用方法就是js
可不是mongodb的语法与js一样。

像你提的这个问题:
可以把这个对象查找出来再用我给你提供的方法解决
var doc = db.myFirstCollection.findOne({_id:1}) //使用id查找出来这个对象。
然后你进行doc的更新
doc.auther = [{name:1},{name:2},{name:3}] //这个属性操作和js一样
然后你把这个doc更新到db中
db.myFirstCollection.update({_id:1},doc)

修改器只不过是简化了上面的操作而已

我给你演示的是它更具有普适性的操作。
$inc ,$set 都是对象没有属性的时候就添加一个
这种动态性思想是js的

解决方案二:

多个文档,就是多个key下面的元素还是一个document。
添加就是直接update set来设置对应的key的value是一个document类型的数据

解决方案三:

MONODB的数据文档是JSON,利用JS的知识看它

var doc = {K:V} ;
doc[k] = V;
这不就是js的对象使用方法么
你说给js一个对象动态添加属性怎么玩呢?
doc.addPro = xxxx
这就是文档对象添加属性了

如果是嵌套的,那也一样,假设这里的V是嵌套的子文档
那么 doc[k]就是V了,嘿嘿整体法看看
V又是是一个文档,假设它的key是k1
doc[k][k1]
你发现规律了么?
是不是很象二维数组
不嵌套文档是 一个[]
嵌套一个文档是 [][]

归纳下,嵌套n个文档就是 doc[][][].......[]总共有n+1个[]

我们使用js操作了这个文档对象之后,只要把它在更新到数据库中就可以了。

记住本质操作是 js

解决方案四:

此贴完结。http://blog.csdn.net/lichangzai/article/details/50680949

时间: 2024-09-23 08:01:20

mongodb-Mongodb中如何实现一对多?在一个文档中嵌套多个文档?的相关文章

mongodb java-怎样在java中调用Mongodb内嵌文档中的值?

问题描述 怎样在java中调用Mongodb内嵌文档中的值? 大概的数据结构如下所示,可以使用mongodb的命令 db.first.find( {"EventParameter.TotalSeconds":3} )查询TotalSeconds为某一个数值,比如3数据,但是在java中怎么获取到所有的数值呢?如下面一行代码中get函数中的参数应该怎么写才能获取所有的时间? float seconds=Float.parseFloat(record.get("TotalSeco

mybatis 一对多配置关系实现在一个映射文件中进行增删改查?

问题描述 mybatis 一对多配置关系实现在一个映射文件中进行增删改查? 一对多关系表,如何在一个映射文件中实现对两个表的增删改查操作? 解决方案 http://wenku.baidu.com/link?url=Pxf2M0_Xb42weBxGfesIrn2_nCLTCEQZr1ZuOxvq5-nu_w1rBkgltw7Qlz-iBnv7lDfGf8h_J7i9plUEzaQfpI5JviC0NsTnyV95fdyUwvu 解决方案二: 你在xml定义两个表的sql匹配就行.增删改查就对这两个

mongodb中插入数据的时候,一条document中 可以有相同的key吗

问题描述 mongodb中插入数据的时候,一条document中 可以有相同的key吗 如题 小弟刚开始学mongodb 求大神指教 还有,有没有推荐的mongodb的学习方法和书籍呢 解决方案 key是json对象的,同一层,只能一个,不相同 解决方案二: MongoDB权威指南中文版 - 下载频道 - CSDN.NETMongoDB权威指南中文版,

mongodb-MongoDB中的mapReduce中reduce文件只作用在一个文档上

问题描述 MongoDB中的mapReduce中reduce文件只作用在一个文档上 小白刚接触MongoDB,看到mapReduce这里不是很清楚,自己编了一段代码,想做个计数,然后发觉map方法出来的value如果只有一个元素的时候,好像不参与到reduce函数的计算中.如: var map=function(){ emit(this.name{count:1})}var reduce=function(keyvalues){ var count=0; for(var i in values)

java-Java在一个A类中监听另一个B类里面一个整型变量值的变化

问题描述 Java在一个A类中监听另一个B类里面一个整型变量值的变化 B类中值一变化A就得到这个变化的值,我知道应该是用观察者模式来实现,但不知道具体的方法 解决方案 public class B{ private int a; private OnAUpdateListener onAUpdateListener; public void setOnAUpdateListener(OnAUpdateListener onAUpdateListener){ this.onAUpdateListe

qmap-QT Qmap 在一个函数中定义,怎么在另一个函数中遍历

问题描述 QT Qmap 在一个函数中定义,怎么在另一个函数中遍历 50C void address_pool::set_address_pool(QString get_IP){ QString ip; ip= get_IP; qDebug()<<""IP""<<ip; QStringList str=ip.split(""); QStringList strlist= str.at(0).split("&qu

如何在一个JSP页面中调用另一个JSP页面中的变量

在jsp学习中,经常需要在一个jsp页面中调用另一个jsp页面中的变量,下面就这几天的学习,总结一下. jsp页面之间的变量调用有多种方法: 1.通过jsp的内置对象-request对象获取参数: (1)通过超链接传参: 例:把a.jsp中i的值传到b.jsp中: 在a.jsp页面中的核心代码为: <a href="b.jsp?i=1">传参</a>     (说明:给i赋值时也可以用jsp表达式,例如i=<%变量名 %>) 在b.jsp页面中的核心

如何在一个单元格中输入多行数据

有时,我们经常需要在一个Excel单元格中输入多行数据.您可不要以为这个问题很简单,其实,当我们准备在单元格中换行时,只要按下回车键Excel便肯定转到下一个单元格了.那么如何做才能在同一个单元格中输入多行数据呢?笔者这里就给大家介绍两个小技巧. [注] 本文所述技巧已于Excel 2003下测试通过 方法一. 临时设置法 如果我们只是临时需要在一个单元格中输入多行数据,那么就可以在输入完单元格内容的第一行后,按住Alt键再打回车,这时,继续输入的字符便自动出现在了当前单元格的下方了. 方法二.

Excel2010如何在一个单元格中显示图表

往往我们用到的Excel插入图表时,图表都会占据很多个单元格,有没有什么办法能够让图表只在一个单元格中显示呢?其实方法是有的,目前最新版本的Excel2010就有这项功能,叫"迷你图表",下面就带领大家一起来看看Excel2010中是如何插入迷你图表的! 步骤一.首先,打开Excel表格,然后鼠标左键单击选中需创建迷你图表的单元格,切换到"插入"功能选项卡中,在"迷你图"组中,单击一种迷你图表类型(目前只有3种迷你图:拆线图.柱线图.盈亏图)按钮