Ruby on rails 如何在数组上查找由facet操作符创建的ID

Ruby on rails 如何在数组上查找由facet操作符创建的ID,ruby-on-rails,ruby,mongodb,aggregate,mongoid,Ruby On Rails,Ruby,Mongodb,Aggregate,Mongoid,我在MongoDB上收集客户。带有状态字段。可以具有相同的Id字段。 我需要找到第一个更改的值,如“Guest”,并将其Id推送到名为“guests”的特定管道。 和状态为“成员”的客户,我需要从聚合管道“来宾”中推送另一个名为“成员”的管道,其Id等于Id。 这样做是为了获得“来宾”和“成员”中的数量元素 其成员项目: {"_id"=>{"$oid"=>"5ce2ecb3ad71852e7fa9e73f"}, "status"=>"member",

我在MongoDB上收集客户。带有状态字段。可以具有相同的Id字段。 我需要找到第一个更改的值,如“Guest”,并将其Id推送到名为“guests”的特定管道。 和状态为“成员”的客户,我需要从聚合管道“来宾”中推送另一个名为“成员”的管道,其Id等于Id。 这样做是为了获得“来宾”和“成员”中的数量元素

其成员项目:

{"_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需要一个数组(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