有个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
글쎄, 나는 아직도 게으르다고 자책한다.
방금 문서를 확인했는데 확인 방법을 바로 알았어요/당황
쿼리문을 직접 게시:
으아악문제가 발생하면 먼저 설명서를 확인하세요.
仅有的幸福2017-05-02 09:25:36
처음 이 문제를 봤을 때 $in 연산자를 사용하여 처리해야 한다고 생각했습니다. 비교적 간단한 문제였습니다.
질문을 잘 보면 배열에 있는 데이터가 _id라는 문자열인데, 입력 오류가 있는 것인지, _id와 배열의 값을 비교할 필요가 있는지 궁금합니다.
비교하기 전에 배열의 문자열을 ObjectId로 변환해야 합니다.
for (i in arraySrc) {arrayTgt.push(ObjectId(ArraySrc[i]));}
그럼
db.order.find({_id : { $in : arrayTgt}})
참고로.