mongoose - 用mongodb 查詢,用陣列的每個元素來匹配字串的值
巴扎黑
巴扎黑 2017-05-02 09:23:36
0
2
940

有個document 查詢全部結果如下:

db.order.find();

{ "_id" : ObjectId("58464c481dd68f2bcc8c280b"), "teamId" : "580493941a81901a6cabe9b1"},
{ "_id" : ObjectId("5848d4deffe1c81858b7648f"), "teamId" : "580493941a81901a6cabe9b1"},
{ "_id" : ObjectId("5848d557ee026d288000c922"), "teamId" : "581c33eb4d901f06f8ca4c65"}

現在有個需求,是查詢出 teamId 與 陣列中元素相符的資料。例如,條件數組如下:

const array = ['580493941a81901a6cabe9b1'];

請問查詢語句應該怎麼寫,可以查詢兩個資料:

{ "_id" : ObjectId("58464c481dd68f2bcc8c280b"), "teamId" : "580493941a81901a6cabe9b1"},
{ "_id" : ObjectId("5848d4deffe1c81858b7648f"), "teamId" : "580493941a81901a6cabe9b1"},

請賜教,謝謝。

巴扎黑
巴扎黑

全部回覆(2)
Peter_Zhu

額,還是怪自己懶。
剛剛去查了文檔,一下就知道怎麼查了/尷尬

直接貼查詢語句吧:

db.order.find({teamId: {$in: ['580493941a81901a6cabe9b1']}});

遇到問題,還是先查文檔吧。

仅有的幸福

首先看到這個問題的時候,覺得應該是用$in的操作符來處理,覺得是比較簡單的問題。

仔細看看你的問題,array裡面的資料是_id的字串,就在想問題是不是有輸入錯誤,是不是需要做_id和array的值的比對。

在比對之前,需要將array中的string轉換為ObjectId。

for (i in arraySrc) {arrayTgt.push(ObjectId(ArraySrc[i]));}

然後

db.order.find({_id : { $in : arrayTgt}})

供參考。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板