mongoose - 用mongodb 查询,用数组的每个元素来匹配字符串的值
巴扎黑
巴扎黑 2017-05-02 09:23:36
0
2
914

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

请赐教,谢谢。

巴扎黑
巴扎黑

Antworte allen(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}})

供参考。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage