CNode

Mongoose 操作数据库问题请教,高手请进。

Oowen-hong发布于12 年前最后回复12 年前6 回复7513 浏览0 收藏

数据中定义的类型如下:

var classSchema = new mongoose.Schema({
	classify : {
		type: String,
		required : true
	},
	subClassify :[
		{
			test1 : String,
			test2 : String
		},
	]
},{safe:true});
var classModel = db.model('subClass',classSchema);
var parent = new classModel({
	classify: 'JS开发',
	subClassify :[
		{
			test1 : "abc",
			test2 : "bdc"
		},
	]
});
//存入数据库
parent.save(function(err,data){
	console.log(data);
})

操作后数据库正常存入数据显示如下:

/* 0 */
{
  "classify" : "JS开发",
  "_id" : ObjectId("534953412742011430c8b7a4"),
  "subClassify" : [
{
      "test1" : "123",
      "test2" : "456",
      "_id" : ObjectId("534953412742011430c8b7a5")
}
],
  "__v" : 0
}

现在我的问题是我想操作上面这个条数据,我现在想在 subClassify 这个字段下面增加一条数据,最后数据结果如下:

/* 0 */
{
  "classify" : "JS开发",
  "_id" : ObjectId("534953412742011430c8b7a4"),
  "subClassify" : [
{
      "test1" : "123",
      "test2" : "456",
      "_id" : ObjectId("534953412742011430c8b7a5")
},
{
      "test1" : "abc",
      "test2" : "def",
      "_id" : ObjectId("534953412742011430c8b7a6")
}
],
  "__v" : 0
}

我要怎么在 JS 开发这条字段下的 subClassify 的插入一条新的数据呢,我并不是要更新数据,用了各种方法都无法实现,求各路高手指点。谢谢。

查看回复

回复 (6)

A
airyland#1·12 年前

@owen-hong 我说快了。其实更简单的是直接用$push进行update: http://stackoverflow.com/questions/11963684/how-to-push-an-array-of-objects-into-an-array-in-mongoose-with-one-call mongoose的子文档: http://mongoosejs.com/docs/subdocs.html

A
airyland#2·12 年前

find 然后 push 再 save

A
airyland#3·12 年前

或者看看文档用subdocument操作

O
owen-hong#4·12 年前
引用 airylandfind 然后 push 再 save

解决了,感谢。用Push再存,是个好方法,但是你后面说的subdocument操作这个请问有链接地址吗,没找到相应的文章,谢谢

A
airyland#5·12 年前

为什么我回复总是 forbidden..能不能不要让人这么崩溃。

参与回复
登录后即可参与回复。登录