|
Вопросы по mongo, обновление данных
|
|||
---|---|---|---|
#18+
Никогда раньше с nosql не работал. Но нужда заставила. Есть БД MongoDb, все объекты в ней связаны идентификаторами (LUUID). Есть коллекция Channels, в объектах этой коллекции есть разные свойства (name, desc), а также есть вложенная коллекция (или хеш-таблица) common, в которой есть свойство ip. Свойство ip — это IP-адрес в формате 192.168.a.b. Мне нужно обновить свойства объектов, name="OBJ-ab", desc="Объект a-b". Еще есть коллекция Domains. В объектах этой коллекции есть массив ListChannels, а элементами массива является хеш-таблица со свойствами id (ссылка на Channels), name и desc. Мне нужно обновить свойства этой хеш-таблицы, name="NAME-ab", desc="Объект id, a-b". Не подскажите, куда копать? Я обычно работал только с реляционными БД, там бы мне потребовались джойны и функции типа substr и instr. А тут даже не знаю, с чего начать. ________________________ Мы смотрим с оптимизмом... ...в оптический прицел. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2014, 11:33 |
|
Вопросы по mongo, обновление данных
|
|||
---|---|---|---|
#18+
Alibek B., а можете привести пример в виде JSON? А то я не понял, что такое "вложенная коллекция (или хеш-таблица)". Массив объектов? А копать в сторону официального сайта, где расписаны методы работы с nested arrays в mongo. Также поддерживается Stored JavaScript, то есть Вы можете определить в базе функцию, которая нужным Вам образом обработает Ваши коллекции. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 12:16 |
|
Вопросы по mongo, обновление данных
|
|||
---|---|---|---|
#18+
skyANAА то я не понял, что такое "вложенная коллекция (или хеш-таблица)". Массив объектов? мой хрустальный шар подозревает, что - отдельная коллекция ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 12:21 |
|
Вопросы по mongo, обновление данных
|
|||
---|---|---|---|
#18+
Могу, но JSON довольно большой. А если буду вырезать лишнее, могу случайно вырезать и нужное. Channels (один из элементов) Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234.
Domains (включена только часть из availableChannels) Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127.
Мне нужно обновить Channels{<id>}{channelName} и Channels{<id>}{description}. А затем обновить Domains{<>}{availableChannels}[<>]{channelName} и Domains{<>}{availableChannels}[<>]{description} (<> — это обход всех элементов коллекции или массива). Вроде бы из того, что прочитал, выходит что джойнов в MongoDb нет по определению и обновлять данные нужно из клиента. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 12:52 |
|
Вопросы по mongo, обновление данных
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 12:53 |
|
Вопросы по mongo, обновление данных
|
|||
---|---|---|---|
#18+
Я надеялся, что будет аналог SQL UPDATE, чтобы одним-двумя запросами обновить все данные, а не проходить на клиенте по всем коллекциям. Ок, буду делать скрипт. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 12:56 |
|
Вопросы по mongo, обновление данных
|
|||
---|---|---|---|
#18+
Alibek B.Я надеялся, что будет аналог SQL UPDATE, чтобы одним-двумя запросами обновить все данные, а не проходить на клиенте по всем коллекциям. Ок, буду делать скрипт.есть: http://docs.mongodb.org/manual/reference/method/db.collection.update/ ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 13:03 |
|
Вопросы по mongo, обновление данных
|
|||
---|---|---|---|
#18+
Alibek B., советую Вам поставить бесплатную версию MongoVUE и не путаться в терминологии. Никто документы, что хранятся в коллекциях MongoDB, не называет хэш-таблицами :) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 13:18 |
|
Вопросы по mongo, обновление данных
|
|||
---|---|---|---|
#18+
Alibek B.Мне нужно обновить Channels{<id>}{channelName} и Channels{<id>}{description}. А затем обновить Domains{<>}{availableChannels}[<>]{channelName} и Domains{<>}{availableChannels}[<>]{description} (<> — это обход всех элементов коллекции или массива). Вроде бы из того, что прочитал, выходит что джойнов в MongoDb нет по определению и обновлять данные нужно из клиента.То есть Вы хотите обновить один документ в коллекции Channels и все документы в коллекции Domains, или только те, что связаны с первым документом (из Channels)? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 13:30 |
|
Вопросы по mongo, обновление данных
|
|||
---|---|---|---|
#18+
skyANA http://docs.mongodb.org/manual/reference/method/db.collection.update/ Разве я при этом смогу ссылаться на данные из другой коллекции? Мне нужно обновить атрибуты документов в коллекции Channels. Также мне нужно обновить атрибуты документов в коллекции availableChannels, которая является вложенной в коллекцию Domains. И если в Channels документы самодостаточные, то в availableChannels есть только идентификатор объекта. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 13:42 |
|
Вопросы по mongo, обновление данных
|
|||
---|---|---|---|
#18+
skyANAТо есть Вы хотите обновить один документ в коллекции Channels и все документы в коллекции Domains, или только те, что связаны с первым документом (из Channels)? Я хочу обновить все документы в коллекции Channels в соответствии с определенным алгоритмом. И также мне нужно обновить все документы в коллекции Domains, но предварительно мне нужно выяснить, на какой документ из Channels идет ссылка. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 13:44 |
|
Вопросы по mongo, обновление данных
|
|||
---|---|---|---|
#18+
Не подскажите, как нужно сделать правильно? Использую такой код на Perl: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Получаю примерно такой вывод: Код: plaintext
А в Robomongo данные такие: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9.
Как бы мне получить этот самый LUUID? Mango возвращает эти данные в таком виде (если смотреть через Data::Dumper): Код: php 1.
Я пробовал подключить Mango::BSON и использовать bson_decode, но возвращалась пустая строка. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 14:28 |
|
Вопросы по mongo, обновление данных
|
|||
---|---|---|---|
#18+
Пока сделал через unpack('H*', $data). Но мне кажется, что в Mango должны быть специальные инструменты. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 14:49 |
|
Вопросы по mongo, обновление данных
|
|||
---|---|---|---|
#18+
Mango - это что? Название Вашей базы? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 15:08 |
|
Вопросы по mongo, обновление данных
|
|||
---|---|---|---|
#18+
Alibek B., и что Вы хотите сделать-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 15:11 |
|
Вопросы по mongo, обновление данных
|
|||
---|---|---|---|
#18+
Запускаем shell: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 15:15 |
|
Вопросы по mongo, обновление данных
|
|||
---|---|---|---|
#18+
Mango — это драйвер доступа к mongodb на Perl. Я думал, что типы данных и способы их представления как-то регламентированы в mongodb. Но видимо это perl-специфичные особенности, попробую узнать в сообществе Perl. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.12.2014, 16:05 |
|
Вопросы по mongo, обновление данных
|
|||
---|---|---|---|
#18+
Alibek B.Mango — это драйвер доступа к mongodb на Perl. Я думал, что типы данных и способы их представления как-то регламентированы в mongodb. Но видимо это perl-специфичные особенности, попробую узнать в сообществе Perl.Всё регламентировано, и методы: - Object Constructors and Methods - UUID() и типы: - Data Model Reference - BSON Types - $type ... |
|||
:
Нравится:
Не нравится:
|
|||
30.12.2014, 10:28 |
|
|
start [/forum/topic.php?fid=48&msg=38845803&tid=1856860]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 251ms |
total: | 408ms |
0 / 0 |