ç±»ï¼Mongo::Database
- ç»§æ¿ï¼
-
对象
- 对象
- Mongo::Database
- æ©å±æ¹å¼ï¼
- å¯è½¬å
- å æ¬ï¼
- å¯éè¯
- å®ä¹äºï¼
- lib/mongo/database.rb,
lib/mongo/database/view.rb
Overview
è¡¨ç¤ºæ°æ®åºæå¡å¨ä¸çæ°æ®åºä»¥åå¯ä»¥å¨æ¤çº§å«å¯¹å ¶æ§è¡çæä½ã
å¨å½å空é´ä¸å®ä¹
ç±»ï¼ æ¥ç
常éæè¦æå
- ADMIN =
管çåæ°æ®åºåç§°ã
'管çå'- å½ä»¤ =
æ°æ®åºå½ä»¤å¯¹å ¶è¿è¡æä½çâéåâã
'$cmd'- DEFAULT_OPTIONS =
é»è®¤æ°æ®åºé项ã
é项::å·²ç¼è¾.new(database: ADMIN).å»ç»
- NAME =
å·²å¼ç¨ã
æ°æ®åºåç§°åæ®µå¸¸éã
'åç§°'- DATABASES =
æ°æ®åºå¸¸éã
'databases'- å½åç©ºé´ =
å 嫿æéåéåã
'system.namespaces'
å®ä¾å±æ§æè¦æå
-
#client â Client
åªè¯»
客æ·ç«¯æ°æ®åºå®¢æ·ç«¯ã
-
#åç§°â string
åªè¯»
åç§°æ°æ®åºçåç§°ã
-
# options â åå¸
åªè¯»
é项 é项ã
ç±»æ¹æ³æè¦æå
-
ãå建(客æ·ç«¯) â æ°æ®åº
private
为æä¾ç客æ·ç«¯å建ä¸ä¸ªæ°æ®åºï¼ä»¥å¨ä¸å¸æå®¢æ·ç«¯çåå§æ°æ®åºå®ä¾ç¸åæ¶ä½¿ç¨ã
å®ä¾æ¹æ³æè¦æå
-
# == (other) â true, false
æ£æ¥æ°æ®åºå¯¹è±¡ä¸å¦ä¸ä¸ªå¯¹è±¡çç¸çæ§ã
-
# [] (collection_name, options = {}) â Mongo::Collection ï¼åä½ï¼ # éåï¼
ææä¾çåç§°è·åæ¤æ°æ®åºä¸çéåã
-
#aggregate (pipeline, options = {}) â Collection::View::Aggregation
å¯¹æ°æ®åºæ§è¡èåã
-
#cluster â Mongo::Server
ä»é群ä¸è·å主èç¹ (primary node in the replica set)æå¡å¨ã
-
# collection_names (options = {}) â Array<String>
è·åæ°æ®åºä¸ææéç³»ç»éåçåç§°ã
-
# collections (options = {}) â Array<Mongo::Collection>
è·åå±äºæ¤æ°æ®åºçææéç³»ç»éåã
-
# command (operation, opts = {}) â Mongo::Operation::Result
å¯¹æ°æ®åºæ§è¡å½ä»¤ã
-
# drop (options = {}) â ç»æ
å 餿°æ®åºåå ¶ææç¸å ³ä¿¡æ¯ã
-
# fs (options = {}) â Grid::FSBucket
è·åæ¤æ°æ®åºçç½æ ¼âæä»¶ç³»ç»âã
-
#initialize (客æ·ç«¯, name, options = {}) â æ°æ®åº
æé 彿°
å®ä¾åä¸ä¸ªæ°çæ°æ®åºå¯¹è±¡ã
-
#æ£æ¥â string
ä¸ºæ°æ®åºè¿è¡ç¾è§æå°çstringæ£æ¥ã
-
# list_collections (options = {}) â Array<Hash>
è·åæå ³æ°æ®åºä¸ææéç³»ç»éåçä¿¡æ¯ã
-
# operation_timeups (opts) â åå¸
private
卿ä½çº§å«ä¸è®¾ç«çtimeout_ms å¼ï¼å¦ææï¼ï¼å/æå¨éå/æ°æ®åº/客æ·ç«¯çº§å«ä¸è®¾ç«çtimeout_msï¼å¦ææï¼ã
-
# read_command (operation, opts = {}) â åå¸
private
å¯¹æ°æ®åºæ§è¡è¯»åå½ä»¤ï¼å¿ è¦æ¶éè¯è¯»åã
-
#timeout_ms â Integer | nil
private
è¯¥æ°æ®åºæç¸åºå®¢æ·ç«¯çæä½è¶ æ¶ã
-
# users â View::User
è·åæ¤æ°æ®åºçç¨æ·è§å¾ã
-
# watch (pipeline = [], options = {}) â ChangeStream
å è®¸ç¨æ·è¯·æ±ä¸ºå®¢æ·ç«¯æ°æ®åºä¸åççæææ´æ¹åééç¥ã
Retryable ä¸å å«çæ¹æ³
#read_workerã#select_serverã#with_overload_retryã#write_worker
æé 彿°è¯¦æ
#initialize (客æ·ç«¯, name, options = {}) âæ°æ®åº
å®ä¾åä¸ä¸ªæ°çæ°æ®åºå¯¹è±¡ã
365 366 367 368 369 370 371 372 373 374 |
# File 'lib/ Mongo/ æ°æ®åº.rb', line 365 def åå§å(客æ·ç«¯, åç§°, = {}) æé« é误::InvalidDatabaseName.new é¤é åç§° if Lint.å·²å¯ç¨ï¼ && !(åç§°.is_a?(å符串) || åç§°.is_a?(符å·)) æé« "æ°æ®åºåç§°å¿ é¡»æ¯stringæç¬¦å·ï¼ #{ name } " end @client = 客æ·ç«¯ @name = åç§°.to_s.å»ç» @options = .å»ç» end |
å®ä¾å±æ§è¯¦ç»ä¿¡æ¯
# 客æ·ç«¯ â客æ·ç«¯ï¼åªè¯»ï¼
è¿å客æ·ç«¯æ°æ®åºå®¢æ·ç«¯ã
60 61 62 |
# File 'lib/ Mongo/ æ°æ®åº.rb', line 60 def 客æ·ç«¯ @client end |
# name â string (readonly)
è¿å nameæ°æ®åºçåç§°ã
63 64 65 |
# File 'lib/ Mongo/ æ°æ®åº.rb', line 63 def åç§° @name end |
# options âåå¸ï¼åªè¯»ï¼
è¿å options é项ã
66 67 68 |
# File 'lib/ Mongo/ æ°æ®åº.rb', line 66 def @options end |
ç±»æ¹æ³è¯¦ç»ä¿¡æ¯
ãå建(客æ·ç«¯) âæ°æ®åº
æ¤æ¹æ³æ¯ç§æ API çä¸é¨åã æ¨åºå°½å¯è½é¿å ä½¿ç¨æ¤æ¹æ³ï¼å 为å®å°æ¥å¯è½ä¼è¢«å é¤ææ´æ¹ã
为æä¾ç客æ·ç«¯å建ä¸ä¸ªæ°æ®åºï¼ä»¥å¨ä¸å¸æå®¢æ·ç«¯çåå§æ°æ®åºå®ä¾ç¸åæ¶ä½¿ç¨ã
546 547 548 549 |
# File 'lib/ Mongo/ æ°æ®åº.rb', line 546 def self.å建(客æ·ç«¯) database = Database.new(客æ·ç«¯, 客æ·ç«¯.[:database], 客æ·ç«¯.) 客æ·ç«¯.instance_variable_set(:@database, database) end |
å®ä¾æ¹æ³è¯¦ç»ä¿¡æ¯
# == (other) â true , false
æ£æ¥æ°æ®åºå¯¹è±¡ä¸å¦ä¸ä¸ªå¯¹è±¡çç¸çæ§ã å°ä» æ£æ¥åç§°æ¯å¦ç¸åã
93 94 95 96 97 |
# File 'lib/ Mongo/ æ°æ®åº.rb', line 93 def ==(å ¶ä») return false é¤é å ¶ä».is_a?(Database) åç§° == å ¶ä».åç§° end |
# [] (collection_name, options = {}) â Mongo::Collectionä¹ç§°ä¸ºï¼éå
ææä¾çåç§°è·åæ¤æ°æ®åºä¸çéåã
110 111 112 113 114 115 116 117 |
# File 'lib/ Mongo/ æ°æ®åº.rb', line 110 def [ ](collection_name, = {}) if [:server_api] æé« ArgumentError, 'ä¸è½ä¸ºéå对象æå® :server_api é项ãå®åªè½å¨å®¢æ·ç«¯çº§å«æå®' end Collection.new(self, collection_name, ) end |
#aggregate (pipeline, options = {}) â Collection::View::Aggregation
å¯¹æ°æ®åºæ§è¡èåã
454 455 456 |
# File 'lib/ Mongo/ æ°æ®åº.rb', line 454 def èå(管é, = {}) æ¥ç.new(self, ).èå(管é, ) end |
#cluster â Mongo::Server
è¿å ä»é群ä¸è·å主èç¹ (primary node in the replica set)æå¡å¨ã
79 80 |
# File 'lib/ Mongo/ æ°æ®åº.rb', line 79 def_delegators :cluster, :next_primary |
# collection_names (options = {}) â Array<String>
è¿åçéååç§°éåå³äºå®æè¯·æ±ç MongoDB æå¡å¨ççæ¬ã
è·åæ°æ®åºä¸ææéç³»ç»éåçåç§°ã
See https://mongodb.com/zh-cn/docs/manual/reference/command/listCollections/
for more information and usage.
144 145 146 |
# File 'lib/ Mongo/ æ°æ®åº.rb', line 144 def collection_names( = {}) æ¥ç.new(self, ).collection_names() end |
# collections (options = {}) â Array< Mongo::Collection >
è¿åç设ç«éåå³äºå®æè¯·æ±çMongoDBæå¡å¨ççæ¬ã
è·åå±äºæ¤æ°æ®åºçææéç³»ç»éåã
See https://mongodb.com/zh-cn/docs/manual/reference/command/listCollections/
for more information and usage.
205 206 207 |
# File 'lib/ Mongo/ æ°æ®åº.rb', line 205 def collections( = {}) collection_names().map { |åç§°| éå(åç§°) } end |
# command (operation, opts = {}) â Mongo::Operation::Result
å¯¹æ°æ®åºæ§è¡å½ä»¤ã
231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 |
# File 'lib/ Mongo/ æ°æ®åº.rb', line 231 def å½ä»¤(æä½, opts = {}) opts = opts.dup execution_opts = opts.å é¤(:execution_options) || {} txn_read_pref = (opts[:session].txn_read_preference if opts[:session] && opts[:session].in_transaction?) txn_read_pref ||= opts[:read] || ServerSelector::主èç¹ Lint.validate_underscore_read_preference(txn_read_pref) éæ©å¨ = ServerSelector.è·å(txn_read_pref) 客æ·ç«¯.with_session(opts) do |ä¼è¯| ä¸ä¸æ = æä½::ä¸ä¸æ.new( 客æ·ç«¯: 客æ·ç«¯, ä¼è¯ï¼ ä¼è¯, operation_timeups: operation_timeups(opts) ) op = æä½::å½ä»¤.new( éæ©å¨ï¼ æä½, db_name: åç§°, 读åï¼ éæ©å¨, ä¼è¯ï¼ ä¼è¯ ) retry_enabled = 客æ·ç«¯.[:retry_reads] != false && 客æ·ç«¯.[:retry_writes] != false with_overload_retry(ä¸ä¸æï¼ ä¸ä¸æ, retry_enabled: retry_enabled) do server = éæ©å¨.select_server(é群, nil, ä¼è¯) op.æ§è¡(server, ä¸ä¸æï¼ ä¸ä¸æ, éé¡¹ï¼ execution_opts) end end end |
# drop (options = {}) âç»æ
å 餿°æ®åºåå ¶ææç¸å ³ä¿¡æ¯ã
325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 |
# File 'lib/ Mongo/ æ°æ®åº.rb', line 325 def å é¤( = {}) æä½ = { dropDatabase: 1 } 客æ·ç«¯.with_session() do |ä¼è¯| write_concern = if [:write_concern] writeConcern.è·å([:write_concern]) else self.write_concern end æä½::å 餿°æ®åº.new({ éæ©å¨ï¼ æä½, db_name: åç§°, write_concern: write_concern, ä¼è¯ï¼ ä¼è¯ }).æ§è¡( next_primary(nil, ä¼è¯), ä¸ä¸æï¼ æä½::ä¸ä¸æ.new( 客æ·ç«¯: 客æ·ç«¯, ä¼è¯ï¼ ä¼è¯, operation_timeups: operation_timeups() ) ) end end |
#fs(options = {}) â Grid::FSBucket
è·åæ¤æ°æ®åºçç½æ ¼âæä»¶ç³»ç»âã
408 409 410 |
# File 'lib/ Mongo/ æ°æ®åº.rb', line 408 def fs( = {}) ç½æ ¼::FSBucket.new(self, ) end |
#æ£æ¥â string
ä¸ºæ°æ®åºè¿è¡ç¾è§æå°çstringæ£æ¥ã
384 385 386 |
# File 'lib/ Mongo/ æ°æ®åº.rb', line 384 def æ£æ¥ " #<Mongo::Database: 0 x #{ object_id } name= #{ name } > " end |
# list_collections (options = {}) â Array<Hash>
è¿åçéåéä»¥åæ¯ä¸ªéåçä¿¡æ¯å叿¨¡å¼åå³äºå®æè¯·æ±ç MongoDB æå¡å¨çæ¬ã
è·åæå ³æ°æ®åºä¸ææéç³»ç»éåçä¿¡æ¯ã
See https://mongodb.com/zh-cn/docs/manual/reference/command/listCollections/
for more information and usage.
177 178 179 |
# File 'lib/ Mongo/ æ°æ®åº.rb', line 177 def list_collections( = {}) æ¥ç.new(self, ).list_collections() end |
# operation_timeups (opts) â åå¸
æ¤æ¹æ³æ¯ç§æ API çä¸é¨åã æ¨åºå°½å¯è½é¿å ä½¿ç¨æ¤æ¹æ³ï¼å 为å®å°æ¥å¯è½ä¼è¢«å é¤ææ´æ¹ã
è¿å卿ä½çº§å«ï¼å¦ææï¼ä¸è®¾ç«çtimeout_ms å¼ï¼å/æå¨éå/æ°æ®åº/客æ·ç«¯çº§å«ä¸è®¾ç«çtimeout_msï¼å¦ææï¼ã
563 564 565 566 567 568 569 570 571 572 |
# File 'lib/ Mongo/ æ°æ®åº.rb', line 563 def operation_timeups(opts) # TODO: æä»¬åºè¯¥éæ°è¯ä¼°æ¯å¦éè¦åå«è®¾ç½®ä¸¤æ¬¡è¶ æ¶ã {}.ç¹å» do |ç»æ| if opts[:timeout_ms].nil? ç»æ[:inherited_timeout_ms] = timeout_ms else ç»æ[:operation_timeout_ms] = opts.å é¤(:timeout_ms) end end end |
# read_command (operation, opts = {}) âåå¸
æ¤æ¹æ³æ¯ç§æ API çä¸é¨åã æ¨åºå°½å¯è½é¿å ä½¿ç¨æ¤æ¹æ³ï¼å 为å®å°æ¥å¯è½ä¼è¢«å é¤ææ´æ¹ã
å¯¹æ°æ®åºæ§è¡è¯»åå½ä»¤ï¼å¿ è¦æ¶éè¯è¯»åã
280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 |
# File 'lib/ Mongo/ æ°æ®åº.rb', line 280 def read_command(æä½, opts = {}) txn_read_pref = (opts[:session].txn_read_preference if opts[:session] && opts[:session].in_transaction?) txn_read_pref ||= opts[:read] || ServerSelector::主èç¹ Lint.validate_underscore_read_preference(txn_read_pref) å好 = ServerSelector.è·å(txn_read_pref) 客æ·ç«¯.with_session(opts) do |ä¼è¯| ä¸ä¸æ = æä½::ä¸ä¸æ.new( 客æ·ç«¯: 客æ·ç«¯, ä¼è¯ï¼ ä¼è¯, operation_timeups: operation_timeups(opts) ) æä½ = æä½::å½ä»¤.new( éæ©å¨ï¼ æä½.dup, db_name: åç§°, 读åï¼ å好, ä¼è¯ï¼ ä¼è¯, comment: opts[:comment] ) op_name = opts[:op_name] || 'command' 追踪å¨.trace_operation(æä½, ä¸ä¸æ, op_name: op_name) do read_with_retry(ä¼è¯, å好, ä¸ä¸æ) do |server| æä½.æ§è¡(server, ä¸ä¸æï¼ ä¸ä¸æ) end end end end |
#timeout_ms â Integer | nil
æ¤æ¹æ³æ¯ç§æ API çä¸é¨åã æ¨åºå°½å¯è½é¿å ä½¿ç¨æ¤æ¹æ³ï¼å 为å®å°æ¥å¯è½ä¼è¢«å é¤ææ´æ¹ã
è¿åæ¤æ°æ®åºæç¸åºå®¢æ·ç«¯çæä½è¶ æ¶æ¶é´ã
555 556 557 |
# File 'lib/ Mongo/ æ°æ®åº.rb', line 555 def timeout_ms [:timeout_ms] || 客æ·ç«¯.timeout_ms end |
# users â View::User
è·åæ¤æ°æ®åºçç¨æ·è§å¾ã
420 421 422 |
# File 'lib/ Mongo/ æ°æ®åº.rb', line 420 def ç¨æ· auth::user::æ¥ç.new(self) end |
# watch (管é = [], options = {}) â ChangeStream
åæ´æµåªå 许â大夿°âè¯»å ³æ³¨ï¼read concernï¼ã
åºäºæ¯æå¯æ¢å¤æ§çç®çï¼æ¤è¾ 婿¹æ³ä¼äºä½¿ç¨ $changeStream é¶æ®µè¿è¡åå§èåã
å è®¸ç¨æ·è¯·æ±ä¸ºå®¢æ·ç«¯æ°æ®åºä¸åççæææ´æ¹åééç¥ã
521 522 523 524 525 526 527 528 529 530 531 |
# File 'lib/ Mongo/ æ°æ®åº.rb', line 521 def è§ç(管é = [], = {}) = .dup [:cursor_type] = :tailable_await if [:max_await_time_ms] mongo::Collection::æ¥ç::åæ´æµ.new( mongo::Collection::æ¥ç.new(éå(" #{ COMMAND } .aggregate "), {}, ), 管é, mongo::Collection::æ¥ç::åæ´æµ::æ°æ®åº, ) end |