如何在创建方面运算符的数组上查找 id

How to find ids on array who is created facet operator

我在 MongoDB 上有客户 collection。带有状态字段。可以有相同的 Id 字段。 我需要找到第一个更改的值,如 'Guest',并将其 Id 推送到名为 'guests' 的特定管道。 状态为 'Member' 的客户我需要推送另一个名为 'members' 的管道,其 ID 等于聚合管道 'guests' 中的 ID。 这样做是为了获得 'guests' 和 'members'.

中的数量元素

其成员项目:

{"_id"=>{"$oid"=>"5ce2ecb3ad71852e7fa9e73f"},
       "status"=>"member",
       "duration"=>nil,
       "is_deleted"=>false,
       "customer_id"=>"17601",
       "customer_journal_item_id"=>"62769",
       "customer_ids"=>"17601",
       "customer_journal_item_ids"=>"62769",
       "self_customer_status_id"=>"21078",
       "self_customer_status_created_at"=>"2017-02-01T00:00:00.000Z",
       "self_customer_status_updated_at"=>"2017-02-01T00:00:00.000Z",
       "updated_at"=>"2019-05-20T18:06:43.655Z",
       "created_at"=>"2019-05-20T18:06:43.655Z"}}

我的聚合

    {
        '$sort': {'self_customer_status_created_at': 1}
    }, 
    {'$match': 
        {
            'self_customer_status_created_at': 
            {
                "$gte": Time.parse('2017-01-17').beginning_of_month, 
                "$lte": Time.parse('2017-01-17').end_of_month 
            }
        } 
    }, 
    {
        "$facet": {
            "guests": 
            [ 
                { 
                    "$group": {
                        "_id": "$_id", 
                        "data": {
                            '$first': '$$ROOT'
                        } 
                    } 
                }, 
                {
                    "$match": {
                        "data.status": "guest"
                    }
                }, {
                    "$group": {
                        "_id":nil, 
                        "array":{
                            "$push": "$data.self_customer_status_id" 
                        } 
                    } 
                }, 
                { 
                    "$project":{
                        "array": 1,
                        "_id":0
                    } 
                }
            ], "members": 
            [ 
                { 
                    "$group": {
                        "_id": "$_id", "data": {
                            '$last': '$$ROOT'
                        } 
                    } 
                }, 
                {
                    "$match": {
                        "data.status": "member",
                        "data.self_customer_status_id": {
                            "$in": [
                                    "$guests.array"
                                  ]
                            }  
                        } 
                    }
                } 
            ] 
        } 
    }, {
        "$project": 
        { 
            "members": 1, 
            "guests.array": 1 
        } 
        } 
    ]
).as_json

而不是"guests.array"数组?我有错误: Mongo::Error::OperationFailure: $in needs an array (2)

我做错了什么? 对不起我的英语!

第二个表情没有看到第一个表情 需要删除

,
                        "data.self_customer_status_id": {
                            "$in": {
                                "$arrayElemAt": 
                                [
                                    "$guests.array", 
                                    0
                                ]
                            }  
                        } 
    {"$match": {"data.self_customer_status_id": { "$in": ["guests.array"] } } }
    ```
this link paste before $project