之前使用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"]} 添加這個篩選條件的原因是:要比較兩個字段,前提是兩個字段都必須存在。
這篇筆記好短啊!