Maison > Questions et réponses > le corps du texte
有个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
Eh bien, je me reproche toujours d'être paresseux.
Je viens de vérifier le document, et j'ai tout de suite su comment le vérifier/embarrassant
Publiez directement l'instruction de requête :
db.order.find({teamId: {$in: ['580493941a81901a6cabe9b1']}});
Si vous rencontrez un problème, consultez d'abord la documentation.
仅有的幸福2017-05-02 09:25:36
Quand j'ai vu ce problème pour la première fois, j'ai pensé qu'il devrait être traité en utilisant l'opérateur $in. Je pensais que c'était un problème relativement simple.
En regardant attentivement votre question, les données du tableau sont une chaîne de _id. Je me demande s'il y a une erreur de saisie et s'il est nécessaire de comparer les valeurs de _id et du tableau.
Avant la comparaison, les chaînes du tableau doivent être converties en ObjectId.
pour (i dans arraySrc) {arrayTgt.push(ObjectId(ArraySrc[i]));}
Alors
db.order.find({_id : { $in : arrayTgt}})
Pour référence.