如何在 mongodb 中的集合中添加一个新的数组字段?
How to add a new array field to collection in mongodb?
例如,我有一个集合,例如 User
,其中有一个字段 name
(默认为 _id
字段)。我向这个集合中插入了一些文档。
然后我想在这个集合中添加一个字段emails
(这是一个用于插入多封电子邮件的数组)。如果它是一个普通的字段(不是一个数组),它可以用 update
和 $set 轻松完成。但是,对于数组,我无法使用 update
命令和 $upsert、$addToSet、$push... 创建新字段,因为之前未创建数组。
我认为这是一种常见的行为,但我找不到任何方法来做到这一点。
如果该字段尚不存在,则所有 $set
、$addToSet
和 $push
运算符都将创建数组。确保您已将 email
添加到 Mongoose 模型的架构中,以便 update
正常发生。
var userSchema = new Schema({
name: String,
emails: [String]
});
如果 emails
字段尚不存在或为空,则以下所有三个选项都具有添加电子邮件数组的相同效果:
var emails = ['foo@bar.com', 'bar@foo.com'];
User.update({_id: id}, {$set: {emails: emails}}, function(err, num) {...});
User.update({_id: id}, {$addToSet: {emails: {$each: emails}}}, function(err, num) {...});
User.update({_id: id}, {$push: {emails: {$each: emails}}}, function(err, num) {...});
db.t1.insert({name:"sachin"})
db.t1.insert({name:"shukla"})
db.t1.update({}, {$set:{arr:[]}}, {multi:true} )
db.t1.update({}, {$push: {arr:"tmp"} }, {multi:true} )
例如,我有一个集合,例如 User
,其中有一个字段 name
(默认为 _id
字段)。我向这个集合中插入了一些文档。
然后我想在这个集合中添加一个字段emails
(这是一个用于插入多封电子邮件的数组)。如果它是一个普通的字段(不是一个数组),它可以用 update
和 $set 轻松完成。但是,对于数组,我无法使用 update
命令和 $upsert、$addToSet、$push... 创建新字段,因为之前未创建数组。
我认为这是一种常见的行为,但我找不到任何方法来做到这一点。
如果该字段尚不存在,则所有 $set
、$addToSet
和 $push
运算符都将创建数组。确保您已将 email
添加到 Mongoose 模型的架构中,以便 update
正常发生。
var userSchema = new Schema({
name: String,
emails: [String]
});
如果 emails
字段尚不存在或为空,则以下所有三个选项都具有添加电子邮件数组的相同效果:
var emails = ['foo@bar.com', 'bar@foo.com'];
User.update({_id: id}, {$set: {emails: emails}}, function(err, num) {...});
User.update({_id: id}, {$addToSet: {emails: {$each: emails}}}, function(err, num) {...});
User.update({_id: id}, {$push: {emails: {$each: emails}}}, function(err, num) {...});
db.t1.insert({name:"sachin"})
db.t1.insert({name:"shukla"})
db.t1.update({}, {$set:{arr:[]}}, {multi:true} )
db.t1.update({}, {$push: {arr:"tmp"} }, {multi:true} )