使用 mongoose 添加子子文档项
Posted
技术标签:
【中文标题】使用 mongoose 添加子子文档项【英文标题】:Add sub-subdocument items with mongoose 【发布时间】:2017-02-22 21:55:57 【问题描述】:我有以下文档结构,需要使用 mongoose 添加到子子文档中:
var organization = module.exports = mongoose.Schema(
teams: [
permissions: [ permission: String ]
]
)
organization.methods.addTeam = function(team)
//the save occurs in a repository layer later on, for now I am just prepping the object for the save
this.teams.push(team);
var subdoc = this.teams[0];
subdoc.isNew;
//Ideally, something like this would be great but I have not been able to find any doc that really provides a good example on this scenario
organization.methods.addPermission = function(id(team), permission)
var teams = this.teams.id(id)
teams.permissions.push(permission);
var subsubdoc = teams.permission[0];
subsubdoc.isNew;
我是 node.js 和 mongodb 的新手,我遇到了子子文档的以下问题。在以下示例中,我需要添加到权限数组。根据我找到的示例,我在组织架构上添加了一个新方法来处理将团队添加到组织中。我想向组织架构添加一个类似的方法来处理向团队子文档添加权限。我还想在添加之前检查并确保权限不存在。我应该如何处理这种情况?
【问题讨论】:
【参考方案1】:看看 MongoDB 的 $addToSet 运算符。
// file: modules/organization/add_permission.js
var Organization = mongoose.model('Organization');
exports.addPermission = function(teamId, permission)
Organization.update(
_id: teamId, // query
$addToSet: permissions: permission: permission, // update
function(err) // callback
// handle error
// other logic
);
;
或者在你的 Organization
mongoose 模型上做一些类似的方法。
【讨论】:
以上是关于使用 mongoose 添加子子文档项的主要内容,如果未能解决你的问题,请参考以下文章
使用聚合 mongodb mongoose 将集合子子文档与其他集合子文档连接起来
文档不会使用带有 mongoose 的 save() 方法保存