MongoDB 读写


MongoDB 读写

写事务

const schema = new Schema({ name: String }, {
  writeConcern: {
    w: 'majority',
    j: true,
    wtimeout: 1000
  }
});

w:表示有多少个节点写完成后,才算写完成。可以是数字。比如w等于2的时候,表示有两个节点写完成后才返回。w等于0的时候,表示不确认写操作
也可以是’majority’,表示超过半数节点写完后才返回,

j:表示要先写journal日志,再写数据。

wtimeout:表示写超时的时间

读事务

readPreference

const schema = new Schema({..}, { read: 'primary' });            // also aliased as 'p'
const schema = new Schema({..}, { read: 'primaryPreferred' });   // aliased as 'pp'
const schema = new Schema({..}, { read: 'secondary' });          // aliased as 's'
const schema = new Schema({..}, { read: 'secondaryPreferred' }); // aliased as 'sp'
const schema = new Schema({..}, { read: 'nearest' });            // aliased as 'n'

read:这个参数是readPreference,表示节点读的策略

  • primary:只选择主节点
  • primaryPreferred:优先选择主节点,如果主节点不可用,则选择从节点
  • secondary:只选择从节点
  • secondaryPreferred:先选择从节点,如果从节点不可用,则选择主节点
  • nearest:选择最近的节点

readConcern

new Query().readConcern('local')
new Query().readConcern('l')  // same as local

new Query().readConcern('available')
new Query().readConcern('a')  // same as available

new Query().readConcern('majority')
new Query().readConcern('m')  // same as majority

new Query().readConcern('linearizable')
new Query().readConcern('lz') // same as linearizable

new Query().readConcern('snapshot')
new Query().readConcern('s')  // same as snapshot

readConcern:类似于关系数据库的隔离级别。用于控制从副本集和副本分片读取的数据一致性和隔离性

  • local:读取所有可用并且是当前节点分片的数据
  • available:读取所有可用的数据
  • majority: 读取在大多数节点提交完成的数据
  • linerizable:可线性化读取文档
  • snapshot: 读取最近快照中的数据

文章作者: 彭峰
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 彭峰 !
  目录