Mongodb更新嵌套文档

小豪 2013-01-30 03:16:44
RT,弄了很久都没搞出来!!这样格式的数据,怎样可以把idx,inAddr,retAddr都删掉

/* 0 */
{
"_id" : ObjectId("5108993fd9800a0c708cebc0"),
"id" : 1,
"stacks" : [{
"idx" : 1,
"inAddr" : 1,
"retAddr" : 1,
"module" : 1
}, {
"idx" : 2,
"inAddr" : 2,
"retAddr" : 2,
"module" : 2
}]
}

/* 1 */
{
"_id" : ObjectId("51089944d9800a0c708cebc1"),
"id" : 2,
"stacks" : [{
"idx" : 1,
"inAddr" : 1,
"retAddr" : 1,
"module" : 1
}, {
"idx" : 2,
"inAddr" : 2,
"retAddr" : 2,
"module" : 2
}, {
"idx" : 3,
"inAddr" : 3,
"retAddr" : 3,
"module" : 3
}]
}

/* 2 */
{
"_id" : ObjectId("5108994ad9800a0c708cebc2"),
"id" : 3,
"stacks" : [{
"idx" : 1,
"inAddr" : 1,
"retAddr" : 1,
"module" : 1
}, {
"idx" : 2,
"inAddr" : 2,
"retAddr" : 2,
"module" : 2
}, {
"idx" : 3,
"inAddr" : 3,
"retAddr" : 3,
"module" : 3
}]
}

/* 3 */
{
"_id" : ObjectId("51089953d9800a0c708cebc3"),
"id" : 4,
"stacks" : [{
"idx" : 1,
"inAddr" : 1,
"retAddr" : 1,
"module" : 1
}, {
"idx" : 2,
"inAddr" : 2,
"retAddr" : 2,
"module" : 2
}, {
"idx" : 3,
"inAddr" : 3,
"retAddr" : 3,
"module" : 3
}]
}

/* 4 */
{
"_id" : ObjectId("5108995cd9800a0c708cebc4"),
"id" : 5,
"stacks" : [{
"idx" : 1,
"inAddr" : 1,
"retAddr" : 1,
"module" : 1
}, {
"idx" : 2,
"inAddr" : 2,
"retAddr" : 2,
"module" : 2
}, {
"idx" : 3,
"inAddr" : 3,
"retAddr" : 3,
"module" : 3
}]
}

...全文
457 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ai_li7758521 2013-04-07
  • 打赏
  • 举报
回复
var cursor=db.myCollection.find();

while(cursor.hasNext()){

    var y=cursor.next();  
    for(var i=0;i<y.stacks.length;i++){
    
        delete y.stacks[i].idx;
        delete y.stacks[i].inAddr;
        delete y.stacks[i].retAddr;
    }
    
    db.stacks.save(y);
 }
 
 db.myCollection.find()
strike2368168 2013-02-04
  • 打赏
  • 举报
回复
给你个比较笨的方法,主要看你的数组有多长了,{'$unset':{'stacks.0.idx':1}}这个改变中间的数字,直到把所有的都删完,后面的字段名也要改
strike2368168 2013-02-04
  • 打赏
  • 举报
回复
没有找到专门的语法支持这种操作,估计只能检索出来再更新了

1,798

社区成员

发帖
与我相关
我的任务
社区描述
MongoDB相关内容讨论区
社区管理员
  • MongoDB社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧