之前使用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"]} 添加这个筛选条件的原因是:要比较两个字段,前提是两个字段都必须存在。

  这篇笔记好短啊!

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-08
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-09-04
  • 2021-04-26
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案