前言:
重新撸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 强制使用某索引
后记:
简单记录没接触的关键字,后面会对漏下的操作符做下总结。
