Mongoose 操作数据库问题请教,高手请进。
发布于 11 年前 作者 owen-hong 7058 次浏览 最后一次编辑是 8 年前

数据中定义的类型如下:

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 回复

find 然后 push 再 save

或者看看文档用subdocument操作

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

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

@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

good,非常感谢, forbidden确实蛋疼

回到顶部