Фильтр на основе массива в нескольких документах - PullRequest
0 голосов
/ 04 августа 2020

Используя Python, и у меня есть следующие данные:

    [
        {
                "_id" : "owner-12567c18-9f6a-49d0-a0d7-4b5d4634a46f",
                "car-e2a17cdb-3c13-44ad-af66-d9cd31cdbf67" : [
                        15,
                        0,
                        0,
                        false
                ],
                "car-e2a27cdb-3c13-44ad-af66-d9cd31cdbf67" : [
                        32,
                        0,
                        0,
                        true
                ]
        },
        {
            "_id":'owner-xxx',
           'car_y': [
                x,
                x,
                x,
                false
            ]
         }
    ]

Он следует схеме _id владельца, затем запись для каждой машины и список, содержащий 4 поля.

Я хотел бы отфильтровать для каждого автомобиля владельца тот, у которого последний элемент является ложным, поэтому будет возвращен только автомобиль car-e2a17cdb-3c13-44ad-af66-d9cd31cdbf67 .

1 Ответ

1 голос
/ 04 августа 2020

Думаю, вам нужны qoutas, чтобы получить структуру JSON - это случай поставщика данных?

После этого вы получите структуру словаря:

d = [
    {
        "_id" : "owner-12567c18-9f6a-49d0-a0d7-4b5d4634a46f",
        "car-e2a17cdb-3c13-44ad-af66-d9cd31cdbf67" : ["15", "0", "0", "false"],
        "car-e2a27cdb-3c13-44ad-af66-d9cd31cdbf67" : ["32", "0", "0", "true"]
    }, 
    {
        "_id" : "owner-2",
        "car-e2a17cdb-3c13-44ad-af66-d9cd31cdbf67" : ["15", "0", "0", "false"],
        "car-e2a27cdb-3c13-44ad-af66-d9cd31cdbf67" : ["32", "0", "0", "true"],
        "car-special" : ["32", "0", "0", "false"]
    }
    ]

for owner in d:    
    for key in owner.keys():
        if (owner[key][3] == "false"):
            print('owner: ', owner['_id'], '| car: ', key)

#output:
#owner:  owner-12567c18-9f6a-49d0-a0d7-4b5d4634a46f | car:  car-e2a17cdb-3c13-44ad-af66-d9cd31cdbf67
#owner:  owner-2 | car:  car-e2a17cdb-3c13-44ad-af66-d9cd31cdbf67
#owner:  owner-2 | car:  car-special
...