模型[MongoDB]

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

  1. 不支持groupByhavingjoinleftJoinrightJoinunionstartTransActioncommitsavePointrollBackcallProcedure等聚合及事务相关的方法
  2. 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驱动时lBracketsrBrackets。只对$or有效
    • _or()在mysql中只代表在WHERE中生成一个OR。而在MongoDB中则代表此后的操作都为$or中的条件。除非调用_and()将条件变为and下
  3. getDbFields因为mongodb中collection对字段是没有做强制一制的。这边默认获取第一条数据的所有字段返回

  4. getPk mongo直接返回 '_id'

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

results matching ""

    No results matching ""