2013-12-23 33 views
-2

我有以下集合具有三个文件:如何在集合之间移动数组元素?

{ 
    _id: 1 
    items: ['1a', '1b', '1c'] 
}, 
{ 
    _id: 2, 
    items: ['2a', '2b', '2c'] 
}, 
{ 
    _id: 3, 
    items: [] 
} 

我有必须移动“1A”,“1C”,“2A”,从它们的相应 文件“2B”元素与文档的查询_id:3

我需要得到以下结果:

{ 
    _id: 1 
    items: ['1b'] 
}, 
{ 
    _id: 2, 
    items: ['2c'] 
}, 
{ 
    _id: 3, 
    items: ['1a','1c', '2a', '2b'] 
} 

请帮助我。有什么更好的解决方案来解决我的问题?

+0

嗨,你可以解释为什么你记住我有弊无问题提供什么意见吗? – Erik

+0

我不知道为什么这是downvoted(我没有)。但是,你可以添加代码来显示你试过的东西吗?在MongoDB中,当然不会有一种自动的方式将数组元素从一个文档移动到另一个文档。 – WiredPrairie

回答

0

我不认为移动操作有任何特定的操作员。但是,我认为您可以使用$ push或$ addToSet运算符来执行下面的添加操作,然后从文档中删除这些项目。

db.testcollection.update({_id:3}, {$addToSet:{ ... }}) 
0

首先,您需要解释您为什么要这么做。因为你想做的事就是这个运营商无需添加其它的操作,我想知道最简单的方法是这样做:

  1. 得到分贝
  2. 做了手术,你想
  3. 删除什么结果旧记录并将修改记录保存到db中

虽然这个想法听起来像傻瓜,但它是有用的。 如果您有很深的要求,请把它们给我们。

+0

为了安全起见,我需要使用类似事务的东西 – Erik

+0

@Erik您选择了错误的数据库,MongoDB只对一个文档进行事务处理,它在文档 – Sammaye

+0

中我可能使用事务的TokuMX。这就像InnoDB for MySQL – Erik

-1

使用更新()以$设置操作

db.test1.update({_id:1},{$set:{items:['1b']}}) 

这将更新您的阵列设置。

感谢,