如何在对象数组中查询算法数据

Piu*_*sha 6 algolia

我有一个数据数组,其中 Algolia 索引中包含多个对象,如下所示。

[
{
status:available
startDate: 2000-10-20
endDate:2022-10-20
availablePlatform:[1,2,3]
availableCountry:908,

},
{
status:available,
startDate: 2023-10-20
endDate:2123-10-20
availablePlatform:[4,5,6,7]
AvailableCountry:[144],
},

]
Run Code Online (Sandbox Code Playgroud)

我需要执行一个过滤,该过滤应该在这些对象中进行精确匹配。

前任:

(1) avails.status:available AND avails.availablePlatform:2 AND avails.availableCountry:908

这将按预期返回 true。

(2) avails.status:available AND avails.availablePlatform:2 AND avails.availableCountry:144

availableCountry当 Algolia与第二个对象匹配时,该值也会返回 true 。但在这种情况下我需要返回 false。这样的能力是否存在?或者人们可以向我指出解决这个问题的其他方法吗?

这里也提出了同样的问题https://discourse.algolia.com/t/filtering-which-should-do-a-exact-match-within-data-objects-in-an-array/16677

谢谢。

cmg*_*ess 1

根据这篇关于 Algolia 的文章,您必须为avails数组中的每个元素索引一个单独的记录,这是唯一的方法

假设您的条目看起来像这样

[{
    objectID: 'someid',
    somefield: 'somevalue',
    avails: [{
            status: 'available'
            startDate: '2000 - 10 - 20'
            endDate: '2022 - 10 - 20'
            availablePlatform: [1, 2, 3]
            availableCountry: 908,

        },
        {
            status: 'available',
            startDate: '2023 - 10 - 20'
            endDate: '2123 - 10 - 20'
            availablePlatform: [4, 5, 6, 7]
            availableCountry: [144],
        },

    ]
}]
Run Code Online (Sandbox Code Playgroud)

您可能必须将数组中的每个条目的条目分解为索引上的子条目avails。这样做的缺点是,现在数组中每个元素的记录数量和冗余数据都会avails增加

[{
        objectID: 'someid-1',
        somefield: 'somevalue',
        avails: {
            status: 'available'
            startDate: '2000 - 10 - 20'
            endDate: '2022 - 10 - 20'
            availablePlatform: [1, 2, 3]
            availableCountry: 908,

        }


    },
    {
        objectID: 'someid-2',
        somefield: 'somevalue',
        avails: {
            status: 'available',
            startDate: '2023 - 10 - 20'
            endDate: '2123 - 10 - 20'
            availablePlatform: [4, 5, 6, 7]
            availableCountry: [144],
        }
    }
]
Run Code Online (Sandbox Code Playgroud)