模型[MongoDB]

本小节介绍常用的orm MongoDB操作。详细的api 点这里CmlPHP中对MongoDB的操作基本和MySql一致,大部分操作可以参考模型mysql这里主要列出操作MongoDB与Mysql不同的地方:

  • 不支持groupBy、having、join、leftJoin、rightJoin、union 、startTransAction、commit、savePoint、rollBack、callProcedure等聚合及事务相关的方法
  • and和or有差别 如:

    Model::getInstance()->db()
    ->table('users')
    ->lBrackets()
    ->whereLt('id', 3)
    ->_or()
    ->where('status', 1)
    ->rBrackets()
    ->where('status', 0)
    ->select()

执行的mysqlsql语句为SELECT * FROM hadm_users WHERE (id < '3' OR status = '1' ) AND status = '0' 执行的mongodb语句为{"id":{"$lt":3},"$or":[{"status":1},{"status":0}]}

总结一下:

  • 使用MongoDb驱动时lBrackets、rBrackets。只对$or有效
  • _or()在mysql中只代表在WHERE中生成一个OR。而在MongoDB中则代表此后的操作都为$or中的条件。除非调用_and()将条件变为and下
  • getDbFields因为mongodb中collection对字段是没有做强制一制的。这边默认获取第一条数据的所有字段返回

  • getPk mongo直接返回 '_id'

  • MongoDB不支持设置自增主键。可以通过getMongoDbAutoIncKey获取一个自增值。详细Api

原文: http://doc.cmlphp.com/devintro/model/mongodb/readme.html