Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb Mongoose Db:如何在Mongoose查询中使用参数化方法?_Mongodb_Mongoose - Fatal编程技术网

Mongodb Mongoose Db:如何在Mongoose查询中使用参数化方法?

Mongodb Mongoose Db:如何在Mongoose查询中使用参数化方法?,mongodb,mongoose,Mongodb,Mongoose,我是一个猫鼬新手,我的第一个真正的问题是一个棘手的问题。我需要选择一组组,显示组名称和当前用户的角色(用户id存储在会话变量中) 我可以在Mongoose select查询中使用“角色”方法吗 也许我应该使用一个自定义节点流并在那里实现role方法 我确信我的条件(this.leader==user)或(this.members.indexOf(user)>=0)是正确的或有效的。我需要避免为每个组文档加载用户对象 需要代码示例 谢谢你的帮助 您想要使用的是聚合框架 您可能需要深入了解此查询的

我是一个猫鼬新手,我的第一个真正的问题是一个棘手的问题。我需要选择一组组,显示组名称和当前用户的角色(用户id存储在会话变量中)

我可以在Mongoose select查询中使用“角色”方法吗

也许我应该使用一个自定义节点流并在那里实现role方法

我确信我的条件(this.leader==user)或(this.members.indexOf(user)>=0)是正确的或有效的。我需要避免为每个组文档加载用户对象

需要代码示例


谢谢你的帮助

您想要使用的是聚合框架


您可能需要深入了解此查询的本机驱动程序。

也许应该使用map reduce实现此操作?也许应该使用map reduce实现此操作,并生成一个按用户id索引的集合,该集合跟踪用户所领导或所属的组。会员资格很少改变,因此这可能是最好的方法。
var mongoose = require('mongoose'),
    Schema = mongoose.Schema, 
    ObjectId = Schema.ObjectId;

var Group = new Schema({
    name: { type: String, required: true },
    members: [{ type: ObjectId, ref: 'User' }],
    leader: { type: ObjectId, ref: 'User' },
    // more fields to filter by
});


Group.method('role', function (user) {
    if (this.leader === user) return "Leader";
    else if (this.members.indexOf(user) >= 0) return "Member";
    else return "Non-Member";
});