J'ai un scénario où les documents sont indexés dans la recherche élastique, et j'ai besoin de récupérer le document correspondant dans mongo avec les documents précédents et suivants triés par un horodatage. L'idée étant de récupérer le contexte du document avec le document original.Récupération d'un document séquentiel basé sur _id
Je suis capable de le faire avec succès maintenant si j'utilise un _id séquentiel. À titre d'exemple, en utilisant les données suivantes:
[
{_id: 1, value: 'Example One' },
{_id: 2, value: 'Example Two' },
{_id: 3, value: 'Example Three' },
{_id: 4, value: 'Example Four' },
{_id: 5, value: 'Example Five' },
{_id: 6, value: 'Example Six' },
...
]
si je recherche pour « Four » en ES, je reviens le document _id de 4, car il est séquentiel que je peux créer une requête mongo pour tirer une fourchette comprise entre id - 2 et id + 2, dans ce cas 2 - 6. Cela fonctionne bien, tant que je ne supprime jamais de documents. Lorsque je supprime un document, je dois réindexer toute la série pour éliminer l'écart. Je cherche un moyen d'atteindre les mêmes résultats, mais aussi de pouvoir supprimer des documents sans devoir mettre à jour tous les documents.
Je suis ouvert à l'utilisation d'autres technologies pour y parvenir, je ne suis pas nécessairement lié à mongodb.
Il existe d'autres moyens de résoudre le problème lors de l'utilisation de SGBDR. En utilisant SQL Server par exemple, je pourrais utiliser un CTE avec ROW_NUMBER. Je peux être en mesure d'obtenir ce que je cherche en utilisant une fonction de réduction de la carte. Je vais devoir regarder ça. –