在MongoDb中获取计算列

您好我正在使用MongoDb,因为我需要一个计算列,同时检索组的集合列表。集团收藏有members阵列,其中包含文件_idmember_id,member_type。我需要检查当前用户是否为该组的管理员。如果member_type是1,那么它是管理员,用户也必须是members阵列的一部分。在MongoDb中获取计算列

馆藏结构:

//集合:user_groups

{ 

"_id" : ObjectId("5a339d6cc2d708402ebe53e5"),

"group_description" : "desc",

"members" : [

{

"member_id" : ObjectId("5a335b81d51ba494223227bb"),

"member_type" : 1,

"created_at" : ISODate("2017-12-15T15:31:16.566+05:30"),

"updated_at" : ISODate("2017-12-15T15:31:16.566+05:30"),

"_id" : ObjectId("5a339d6cc2d708402ebe53e6")

}

],

"is_admin" : false

}

我用下面的查询,但返回false,它应该返回true。

db.user_groups.aggregate([{$match:{_id:ObjectId("5a339aaac2d708402ebe53e5")}}, 

{$project:{members: 1,group_description:1,is_admin:{$cond:[{$and:[{$eq:

['$members.member_type',1]},{$eq:

['$members.member_id',ObjectId("5a335aaad51ba494223227bb")]}]},true,false]}}}])

回答:

您需要$unwind$members阵列为你的代码工作。如果members是嵌入式子文档而不是嵌入式子文档数组,您的代码就可以工作。

db.user_groups.aggregate([{ 

$match: {

_id: ObjectId("5a339d6cc2d708402ebe53e5")

}

},

{

$unwind:"$members"

},

{

$project: {

members: 1,

group_description: 1,

is_admin: {

$cond: [{

$and: [{

$eq: ['$members.member_type', 1]

}, {

$eq: ['$members.member_id', ObjectId("5a335b81d51ba494223227bb")]

}]

}, true, false]

}

}

}

])

以上是 在MongoDb中获取计算列 的全部内容, 来源链接: utcz.com/qa/262633.html

回到顶部