在本页面
已解决的问题:
已解决的问题:
已解决的问题:
已解决的问题:
已解决的问题:
已解决的问题:
已解决的问题:
已解决的问题:
已解决的问题:
"local"
如果未为多文档交易指定,默认为读取关注已解决的问题:
已解决的问题:
_id
大于节点数的rs.config 将崩溃已解决的问题:
已解决的问题:
已解决的问题:
已解决的问题:
已解决的问题:
db.collection.countDocuments()
和db.collection.estimatedDocumentCount()
助手enableMajorityReadConcern:false
服务器参数已解决的问题:
已解决的问题:
--redactClientLogData
标志。从版本4.0开始,MongoDB提供了对副本集执行 多文档事务的功能。对于多文档事务,在提交事务之前,在事务外部看不到该事务中的任何写操作。也就是说,多文档交易是原子的。
重要
在大多数情况下,与单文档写入相比,多文档事务产生的性能成本更高,并且多文档事务的可用性不应代替有效的架构设计。在许多情况下, 非规范化数据模型(嵌入式文档和数组)对于您的数据和用例将继续是最佳的。也就是说,在许多情况下,对数据进行适当的建模将最大程度地减少对多文档交易的需求。
有关其他事务使用方面的注意事项(例如运行时限制和oplog大小限制),另请参见 生产注意事项。
该featureCompatibilityVersion
副本集的所有成员必须是4.0
以上。要检查的
featureCompatibilityVersion
成员,请连接到该成员并运行以下命令:
有关该featureCompatibilityVersion
标志的更多信息,请参见
setFeatureCompatibilityVersion
。
mongo
壳牌方法¶方法 | 描述 |
---|---|
Session.startTransaction() |
启动多语句事务。 |
Session.commitTransaction() |
提交交易。 |
Session.abortTransaction() |
中止交易。 |
客户端需要为MongoDB 4.0更新的 MongoDB驱动程序才能使用事务。
snapshot
¶MongoDB 4.0 "snapshot"
为多文档事务引入了新的读关注级别
。
对于多文档交易,MongoDB中有时代替更强读的关注
"local"
和"majority"
阅读的关注。
有关接受阅读关注的所有操作的列表,请参阅 支持阅读关注的操作。
abortTransaction
mongo
shell助手Session.abortTransaction()
。commitTransaction
mongo
shell助手Session.commitTransaction()
。默认情况下,多文档事务
等待5
毫秒以获取事务中的操作所需的锁。如果事务无法在5
毫秒内获得其所需的锁,则事务中止。
您可以使用该maxTransactionLockRequestTimeoutMillis
参数来调整事务等待获取锁的时间。
事务在中止或提交时释放所有锁。
$currentOp
¶聚合管道阶段$currentOp
(以及
currentOp
命令和mongo
外壳帮助程序
db.currentOp()
方法)返回有关非活动会话的信息,这些非活动会话持有锁作为事务的一部分。
transactionLifetimeLimitSeconds
为多文档事务指定生存期,在该生存期之后事务将被视为已过期,并且在下次运行定期清理过程时将被中止。maxTransactionLockRequestTimeoutMillis
指定多文档事务应等待多长时间来获取事务中的操作所需的锁。MongoDB 4.0添加了以下新的聚合运算符以进行类型转换:
操作员 | 描述 |
---|---|
$convert |
将值转换为指定的类型。 |
$toBool |
将值转换为布尔值。 |
$toDate |
将值转换为日期。 |
$toDecimal |
将值转换为Decimal128。 |
$toDouble |
将值转换为Double。 |
$toInt |
将值转换为整数。 |
$toLong |
将值转换为long。 |
$toObjectId |
将值转换为ObjectId。 |
$toString |
将值转换为字符串。 |
MongoDB 4.0添加了以下新的聚合字符串运算符:
操作员 | 描述 |
---|---|
$ltrim |
从字符串开头删除空格或指定的字符。 |
$rtrim |
从字符串末尾删除空格或指定的字符。 |
$trim |
从字符串的开头和结尾删除空格或指定的字符。 |
$dateToString
¶该$dateToString
聚合操作有以下几个选项的变化:
注意
要求featureCompatibilityVersion
(fcv)设置为"4.0"
或更大。
onNull
指定如果date
null为null或缺失的值。format
现在是可选的。$dateFromParts
¶如果比其他字段中指定的值year
,isoYear
和
timezone
是在有效范围之外,$dateFromParts
携带或减去从其它日期的差来计算的日期。有关更多信息,请参见值范围。
$dateFromString
¶该$dateFromString
集结算子接受一个可选format
字段。
$currentOp
¶聚合管道阶段$currentOp
支持以下新选项:
idleSessions
选项,用于返回非活动会话的信息,该非活动会话将锁作为事务的一部分。localOps
选项,以报告在当前mongos
实例本地运行的操作,而不是报告在分片上运行的操作。以下驱动程序与MongoDB 4.0兼容:
|
|
|
SCRAM-SHA-256
注意
要使用SCRAM-SHA-256,
featureCompatibilityVersion
必须将设置为4.0
。有关featureCompatibilityVersion的更多信息,请参见查看FeatureCompatibilityVersion和
setFeatureCompatibilityVersion
。
MongoDB增加了对SCRAM身份验证机制SCRAM-SHA-256的支持,该机制使用SHA-256哈希函数。为了修改迭代计数SCRAM-SHA-256
,MongoDB添加了一个新参数scramSHA256IterationCount
。
创建或更新SCRAM用户时,您可以指定用于用户凭据的特定SCRAM机制。具体来说,MongoDB 4.0将mechanisms
选项添加到以下命令和mongo
Shell帮助器中:
命令 | 方法 |
---|---|
createUser |
db.createUser() |
updateUser |
db.updateUser() |
使用时SCRAM-SHA-256
,MongoDB(即服务器)需要未消化的密码。从MongoDB 4.0开始,默认值
digestPassword
是true
for createUser
,默认值passwordDigestor
是"server"
。在早期的MongoDB版本中,
分别digestPassword
为false
和client
。
isMaster
命令¶从MongoDB 4.0开始,该isMaster
命令接受一个可选字段以在其结果中返回一个附加字段。saslSupportedMechs: <db.user>
isMaster.saslSupportedMechs
isMaster.saslSupportedMechs
是用于创建指定用户的凭据的一系列SASL机制。
MONGODB-CR
从版本4.0开始,MongoDB删除了对不赞成使用的MongoDB Challenge-Response(MONGODB-CR
)身份验证机制的支持。
从3.0版开始,MongoDB不支持MONGODB-CR
用户的创建,
除非该部署已从2.6或更早版本的部署升级,该部署已经具有MONGODB-CR
用户并且尚未升级身份验证架构。
如果您的部署中有存储在MONGODB-CR
架构中的用户凭据,则在升级到版本4.0 之前,必须先升级到Salted Challenge Response Authentication机制(SCRAM) 。有关升级到SCRAM的信息,请参阅
升级到SCRAM。SCRAM
usersInfo
增强¶usersInfo
通过指定以下命令,该命令可以在所有数据库中返回信息:
在usersInfo
与mongo
外壳的助手
db.getUser()
和db.getUsers()
方法接受一个新的可选filter
文件。筛选器文档指定
$match
阶段条件,以仅为符合条件的用户返回信息。
该usersInfo
命令以及mongo
外壳帮助程序
db.getUser()
和db.getUsers()
方法mechanisms
为用户返回该
字段。
从版本4.0开始,MongoDB使用本机TLS / SSL OS库:
Windows | 安全通道(Schannel) |
Linux / BSD | 的OpenSSL |
macOs | 安全运输 |
与此更改相关联,opensslCipherConfig
Linux / BSD支持该参数,而Windows和macOS不再支持该参数
。
适用于macOS的MongoDB 4.0二进制文件支持TLS 1.2。
MongoDB二进制文件(