表单生成器(Form Builder)之查询同一表中两个字段相等的数据

  之前使用MySQL、MSSQL的时候经常会遇到这种情况:查询同一表中某两个字段相等的数据,也就是说业务中有这种需求。这不我们又遇到了,但是此时我们使用的是mongodb。在mongodb中不像MySQL、MSSQL中那么简单,据说可以使用$where实现,但是我不太喜欢这种方式,并且我们的存储结构是这样:表单生成器(Form Builder)之表单数据存储结构mongodb篇 (用户可以任意的添加字段),废了半天劲儿才弄出来,这里记录一下,下面看一下语句:

db.FormInstace.find({
  "FormItems.key":{$in:["1572493551001","1572493551006"]},
  $expr: {
    $eq: [
      { $arrayElemAt: ["$FormItems.value", {"$indexOfArray":["$FormItems.key","1572493551001"]}] },
      { $arrayElemAt: ["$FormItems.value", {"$indexOfArray":["$FormItems.key","1572493551006"]}] },
    ]
  }
});

  "1572493551001","1572493551006"表示表中的两个字段,具体的含义可以查看:表单生成器(Form Builder)之伪造表单数据mongodb篇

  "FormItems.key":{$in:["1572493551001","1572493551006"]} 添加这个筛选条件的原因是:要比较两个字段,前提是两个字段都必须存在。

  这篇笔记好短啊!

posted @ 2020-10-13 23:28  du-blog  阅读(846)  评论(0编辑  收藏  举报