当前位置:  开发笔记 > 编程语言 > 正文

如何在MongoDB中设置子子数组项

如何解决《如何在MongoDB中设置子子数组项》经验,为你挑选了1个好方法。



1> Klinky..:

如果您知道数组中的索引,则可以使用点表示法直接访问数组元素.

update(
{ _id: ObjectId(xxxx) },
{ $set: { 'columns.0.panels.0.top' : 125}}
)

确保将引号中的点标记路径包含为字符串.

编辑:

为了更详细地介绍它如何动态工作,我将在PHP中给出一个示例:

$action = array("columns.$colNum.panels.$panelNum" => $newValue);

是的,有位置运算符,但它看起来不够先进,无法更改数组中的数组,这可能会在MongoDB 1.7.0中发生变化

您可以使用另一种方法,而不是尝试将此信息填充到嵌套文档中.试着把它弄平.您可以创建具有面板和列对象的集合:

列对象:

{
_id: // MongoId
type: 'column',
user: 'username',
order: 1,
width: 30,
}

面板对象:

{
_id: //MongoId
type: 'panel',
user: 'username',
parentColumn: //the columns _id string
top: 125,
left: 100
}

然后,您可以通过执行以下操作找到属于用户的所有列:

find({ type: 'column', user:'username'});

您可以通过执行以下操作找到特定列的所有面板:

find({type: 'panel', columnOwner:'ownerID'});

由于每个列和面板都有一个MongoDB给它的唯一ID,因此您可以轻松查询和自动设置选项.

update({'_id': ObjectId('idstring')}, {$set : { 'top' : 125}});

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有