• mongo java 踩坑记


    为什么会有这么多坑

    1.  Java会把 id:String = "合法ObjectId"  好心好意的 转为  _id:ObjectId 类型。 

    2. 为了避免第1点, 我定义了一个  HashMap, 里面放 id  它就不会转了,但是下面代码报错:

            mor.sys.user!!
                    .UpdateById("58f6cdfe2b3fe4673b897061")
                    .where("roles.id" pair "abc4")
                    .set("roles.$.name" pair "6644")
                    .exec();

    user 下面有 roles 集合, 如果使用 Map 报错, 不使用 Map,使用对象集合, 就没有事。 这帮SB,从Map中反射 id 属性, 我添加了 id 属性,也不行。

    3.  Update  语句中  "id" pair String值,  Java 会把 id 转为 _id , String值会转为 ObjectId

         但是子属性就不会!!!

      role.id pair  String值,就傻傻的报错。

    4. 顺序很重要!

    db.qRCodeTagInfo.aggregate(
    [ 
    { "$match" : { "corpId" : "58fc10252b3fe46746a93fbe"}}
    ,
    { "$group" : { "_id" : { "corpId" : "$corpId" , "createBy" : "$createBy" , "action" : "$action" , "tag" : "$tag"}}} 
    ]
    
    ) 

    $match 写在前面, 说明,先进行查询。

    $match 写在后面, 说明,后执行过滤。 写在后面时,要写为: 

    { "$match" : { "_id.corpId" : "58fc10252b3fe46746a93fbe"}}

    否则找不到 corpId , 因为返回的结果只有一个 _id列, 其它是聚合列。 

  • 相关阅读:
    css基础--Display(显示) and Visibility(可见性)and position (定位)
    css3基础--Margin(外边距)&&padding(外边距)
    前端求职-js
    前端求职-html&css
    css基础3--box module&Border
    css基础-font&link&list属性
    值得学习的PHP
    c++构造函数浅析
    变量定义原则
    函数
  • 原文地址:https://www.cnblogs.com/newsea/p/6751813.html
Copyright © 2020-2023  润新知