有個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"},
請賜教,謝謝。
天蓬老师2017-05-02 09:25:36
額,還是怪自己懶。
剛剛去查了文檔,一下就知道怎麼查了/尷尬
直接貼查詢語句吧:
db.order.find({teamId: {$in: ['580493941a81901a6cabe9b1']}});
遇到問題,還是先查文檔吧。
仅有的幸福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}})
供參考。