Mongodb 仅检索对象数组中查询的元素

Mongodb 仅检索对象数组中查询的元素,mongodb,mongoose,Mongodb,Mongoose,我有一个组织的收藏。每个组织都有成员。我想运行查询来检查用户是否是该组织的成员 // Use findOne so that it returns one document instead of a collection mongoose.model('organization').findOne({ // Instead of querying twice, just set both conditions 'orgId': paramOrgId, 'members.u

我有一个组织的收藏。每个组织都有成员。我想运行查询来检查用户是否是该组织的成员

// Use findOne so that it returns one document instead of a collection
mongoose.model('organization').findOne({
    // Instead of querying twice, just set both conditions
    'orgId': paramOrgId,
    'members.user':req.user._id
}, 
'_id', // We'll just select the _id field. We don't need the whole organization document
function (err, org) {
    if (err)  
        return res.send(500); // Error!

    if (org) 
        return res.send(200);
    else
        return res.send(401);
});
我试过这个:

mongoose.model('organization').find({orgId: paramOrgId}, function(err, organization){
      organization.find({'members.user':req.user._id}, function(err, user){
        if(!user) res.send(401) //The user is not a member in organization

        if(user) res.send(200);

      });

    }
    return res.send(401);
  });
很明显,您在回拨时没有“查找”。我应该怎么做呢

组织文档示例:

> db.organizations.find().forEach(printjson);
{
    "_id" : ObjectId("5381d5d11409f125475fcc90"),
    "orgId" : 5,
    "title" : "ExampleCorp",
    "members" : [
        {
            "tier" : 1,
            "user" : ObjectId("5381d5d11409f125475fcc8c")
        },
        {
            "tier" : 2,
            "user" : ObjectId("5381d5d11409f125475fcc8d")
        },
        {
            "tier" : 3,
            "user" : ObjectId("5381d5d11409f125475fcc8e")
        }
    ]
}

如果您只想检查某个用户是否是某个组织的成员,则可以在一个查询中找到它

// Use findOne so that it returns one document instead of a collection
mongoose.model('organization').findOne({
    // Instead of querying twice, just set both conditions
    'orgId': paramOrgId,
    'members.user':req.user._id
}, 
'_id', // We'll just select the _id field. We don't need the whole organization document
function (err, org) {
    if (err)  
        return res.send(500); // Error!

    if (org) 
        return res.send(200);
    else
        return res.send(401);
});

您是否可以编辑您的问题以包含示例
组织
文档?我认为这只能在单个查询中完成。看到这个了吗