表单生成器(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"]} 添加这个筛选条件的原因是:要比较两个字段,前提是两个字段都必须存在。
这篇笔记好短啊!