1
こんにちは私はMongoDbを使用しています。グループのコレクションのリストを取得しながら計算カラムが必要です。グループコレクションは、_id
,member_id
,member_type
の書類を含むmembers
アレイを有する。現在のユーザーがそのグループの管理者であるかどうかを確認する必要があります。 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
}
私は、次のクエリを使用しますが、それはtrueを返す必要があり、falseを返します。
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'の使用が何であるかわからない、それはクエリのパフォーマンスを低下させるか? – Nirmal
複数のメンバーを持つことができるので、 '$ unwind'を使う必要があります。 '$ unwind'は配列を平坦化します。 '$ unwind'を使用するとパフォーマンスに多少の影響があると思われますが、無視できるほどです。 – Jaco