前言:
重新撸mongo,对应官网API,深入一下,原来的mongo权威指南太老了,而且也没有仔细看。
正文:
$type 修饰符可以对文档类型值进行判断,对应一个类型值表1-16;
$elemMatch 同一元素无视字段顺序匹配,匹配第一个符合要求数组元素
$currentDate: { lastModified: true } lastModified为任意字段,如果不存在创建值为currenDate
替代:db.inventory.replaceOne() _id可省略,若存在_id匹配必须为已经存在的_id
cursor.objsLeftInBatch() 游标方法,显示最近(下一批次)文档数
更改 : db.collection.update(query, update, options)
批量操作:db.collection.bulkWrite() 可有序,无序操作,有序操作当出现错误不执行之后事物,无序为并行操作,执行后续。
sql与mongo操作映射表 https://docs.mongodb.com/manual/reference/sql-comparison/
$isolated 写锁操作符,不可以在 sharded clusters 中使用,不遵循 全或无 的原则 . 当使用此操作符时不允许交叉的改动行为。
两个阶段提交问题(原子性事物回滚):标记状态 initial-》pending-》applied 根据纪录回滚。
findAndModify() 必须存在唯一索引 writeConcern: { w: “majority”, wtimeout: 5000 } 写入到多个节点返回
db.collection.explain()性能查询
单一键索引方向可以随意。
索引详情字段说明
{ "cursor" : "BtreeCursor username_1",//索引名 "isMultiKey" : false,//用于说明本次是否使用了多键索引。 "n" : 1,//查询返回文档数量 "nscannedObjects" : 1,//按照索引查找文档数量 "nscanned" : 1,//按照索引查找数量 "nscannedObjectsAllPlans" : 1, "nscannedAllPlans" : 1, "scanAndOrder" : false,//是否排序 "indexOnly" : false,//是否只是用索引完成查询 "nYields" : 0,//因为写入需求暂停次数 "nChunkSkips" : 0, "millis" : 0,//查询耗时 "indexBounds" : {//索引是用范围 "username" : [ [ "user1000", "user1000" ] ] }, "server" : "user:27017", "filterSet" : false }
hint({“$natural”:1}) 强制使用全表扫描 hint 强制使用某索引
后记:
简单记录没接触的关键字,后面会对漏下的操作符做下总结。