Еще одним решением будет совершенно другой подход. Вместо этого, если создавать такие документы, как это
{
"name": "David",
"location": { "lat": ..., "lon": ...},
"seenFromUsers": ["Laura", "Simone"]
}
мыслить в отношениях, как это:
{
"name": "David",
"seenBy": "Laura"
}
{
"name": "David",
"seenBy": "Simone"
}
этот подход даст вам более простые запросы, и проблема ACID будет решена. Новые виды профиля - это просто новые документы ...
В качестве преимущества вы избавитесь от внутренних объектов, и будет проще добавить дополнительные данные к этому отношению:
{
"name": "David",
"seenBy": "Laura",
"timestamp": ...,
"liked": true
}
{
"name": "David",
"seenBy": "Simone",
"timestamp": ...,
"liked": false
}
И теперь вы сможете выполнить простой запрос для всех положительных лайков профиля или двунаправленных лайков / совпадений ...