Как получить данные из двух коллекций в одном запросе в Монго БД? - PullRequest
2 голосов
/ 19 октября 2011

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

Ответы [ 2 ]

4 голосов
/ 19 октября 2011

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

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

0 голосов
/ 19 октября 2011

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

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

...