Как получить данные из двух коллекций в одном запросе в mongo db?

#c# #.net #mongodb #mongodb-.net-driver

#c# #.net #mongodb #mongodb-.net-driver

Вопрос:

Допустим, у меня есть две коллекции A и B. В моей программе на C # я пытаюсь получить данные из них. В настоящее время я сначала получаю данные из коллекции A и сохраняю документы в контейнер. А затем получить данные из коллекции B. Но теоретически данные могут быть изменены после получения от A и до получения от B. Так что я получаю неправильные результаты. Есть ли безопасный способ?

Ответ №1:

Mongodb не поддерживает транзакции. Из-за того, что mongodb был разработан для масштабируемости (это означает сегментирование, репликацию), а распределенные транзакции могут быть очень дорогими и замедлять работу базы данных в целом. Таким образом, вы не можете блокировать коллекцию A для записи, пока вы получаете / обновляете ее, загружая из B.

В mongodb есть какие-то транзакции — это атомарные обновления для одного документа. Таким образом, вы можете обновить часть документа без его загрузки.

Ответ №2:

Хотя Mongo явно не поддерживает блокировку таблиц, как это делают системы SQL, вы можете захотеть взглянуть на эту fsync функцию. Если я правильно читаю документы, вы должны иметь возможность использовать его как хак, чтобы временно предотвратить запись данных.

http://www.mongodb.org/display/DOCS/fsync Command