0

嗨,在我的 monogo 收藏中包含以下文件

{
"_id" : ObjectId("52398ba524c8b6f8a7c1cd96"),
"hostid":"127.0.0.1",
"application":[
{
"pid" : "50741",
"local_address" : "127.0.0.2:30501",
"user" : "hcsadm",
"pr" : "20",
"ni" : "0"
},
    {
"pid" : "50741",
"local_address" : "127.0.0.2:30509",
"user" : "hcsadm",
"pr" : "20",
"ni" : "0"
},
{
"pid" : "50741",
"local_address" : "127.0.0.2:30505",
"user" : "hcsadm",
"pr" : "20",
"ni" : "0"
}
]
 }

现在我想改变上面的结构如下

{
"_id" : ObjectId("52398ba524c8b6f8a7c1cd96"),
"hostid":"127.0.0.1",
"application":[
{
"pid" : "50741",
"local_address" : [{"127.0.0.2:30501","127.0.0.2:30509","127.0.0.2:30505"}],
"user" : "hcsadm",
"pr" : "20",
"ni" : "0"
} ]
   }

mongodb中有什么方法可以处理这个问题,我尝试过更新查询,但如果有人知道请帮助我,我已经解决了这个问题。

4

2 回答 2

0

您必须将其映射到新集合

于 2013-09-19T15:20:52.047 回答
0

最好的方法是使用聚合框架。MapReduce 也可以工作,但是出于性能和可用性的目的,您通常应该更喜欢聚合框架,除非您正在做一些专门的事情。

在应用程序字段上尝试 $unwind,然后在 application.pid、application.pr 和 application.ni 上尝试 $group。

没有开箱即用的方法可以“就地”执行此操作,因此集合中的文档将在不创建新集合的情况下更新。

于 2013-09-19T17:46:36.620 回答