用猫鼬找到后如何更改子文档

编程入门 行业动态 更新时间:2024-10-18 20:33:21
本文介绍了用猫鼬找到后如何更改子文档的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有一些类似下面的代码,使用猫鼬.

I have some code like below using mongoose.

var mongoose = require('mongoose'); var Schema = mongoose.Schema; mongoose.connect('mongodb://localhost/hoge'); var UserSchema = new Schema({ name: String, children: [ChildSchema], }); var ChildSchema = new Schema({ name: String, }, {_id: false}); var User = mongoose.model('User', UserSchema); var Child = mongoose.model('Child', ChildSchema); User.findOne({_id: '52299322fdbbdec515000001'}, function(err, user) { console.log(user); for (var i=0; i<user.children.length; i++) { var child = user.children[i]; child.name = 'newchild'; } user.save(function(err) { console.log(user); mongoose.disconnect(); }); });

这是我在mongodb中的记录.

And here is my record in mongodb.

{ "name" : "u1", "_id" : ObjectId("52299322fdbbdec515000001"), "children" : [ { "name" : "c2" } ], "__v" : 0 }

我运行脚本时,其输出如下.

When I run the script, it outputs below.

{ name: 'u1', _id: 52299322fdbbdec515000001, __v: 0, children: [ { name: 'c2' } ] } { name: 'u1', _id: 52299322fdbbdec515000001, __v: 0, children: [ { name: 'newchild' } ] }

但是我在mongodb中的记录没有更改.为什么?

But my record in mongodb has not been changed. Why?

仅供参考,如果我在保存之前插入此代码,记录就会更改.

FYI, the record changed if I insert this code before saving.

user.children.push({name: 'somechild'});

推荐答案

对不起,我已经解决了自己.

Sorry, I've resolved myself.

问题在于声明模式的顺序.

The problem is the order of declarating Schemas.

如果我尝试此更改,它会起作用.

It worked if I tried this change.

/* first, children's schema */ var ChildSchema = new Schema({ name: String, }, {_id: false}); /* seconds, parent's schema */ var UserSchema = new Schema({ name: String, children: [ChildSchema], });

更多推荐

用猫鼬找到后如何更改子文档

本文发布于:2023-11-22 13:32:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1617613.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:如何更改   文档   用猫鼬

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!