搜尋

首頁  >  問答  >  主體

mongoose - 用mongodb 查詢,用陣列的每個元素來匹配字串的值

有個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"},

請賜教,謝謝。

巴扎黑巴扎黑2788 天前943

全部回覆(2)我來回復

  • 天蓬老师

    天蓬老师2017-05-02 09:25:36

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

    直接貼查詢語句吧:

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

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

    回覆
    0
  • 仅有的幸福

    仅有的幸福2017-05-02 09:25:36

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

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

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

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

    然後

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

    供參考。

    回覆
    0
  • 取消回覆