[MONGODB] $ 또는 조건 몽구스의 찾기 방법은 제대로 작동하지 않습니다
MONGODB$ 또는 조건 몽구스의 찾기 방법은 제대로 작동하지 않습니다
최근에 나는 Nodejs에 몽구스와 MongoDB를 사용하기 시작.
나는 $ 또는 조건과 _id 필드 Model.find 방법을 사용하는 경우, 몽구스가 제대로 작동하지 않습니다.
이 작동하지 않습니다
User.find({
$or: [
{ '_id': param },
{ 'name': param },
{ 'nickname': param }
]
}, function(err, docs) {
if(!err) res.send(docs);
});
그런데, 나는 '_id'부분을 제거하면,이 작업을 수행합니다!
User.find({
$or: [
{ 'name': param },
{ 'nickname': param }
]
}, function(err, docs) {
if(!err) res.send(docs);
});
그리고 MongoDB의 쉘에서 모두 작업이 제대로.
해결법
-
==============================
1.나는 인터넷 검색을 통해 해결 :
나는 인터넷 검색을 통해 해결 :
var ObjectId = require('mongoose').Types.ObjectId; var objId = new ObjectId( (param.length < 12) ? "123456789012" : param ); // You should make string 'param' as ObjectId type. To avoid exception, // the 'param' must consist of more than 12 characters. User.find( { $or:[ {'_id':objId}, {'name':param}, {'nickname':param} ]}, function(err,docs){ if(!err) res.send(docs); });
-
==============================
2.나는 모두가 콜백 대신 몽구스의 쿼리 빌더 언어와 약속을 사용 간청 :
나는 모두가 콜백 대신 몽구스의 쿼리 빌더 언어와 약속을 사용 간청 :
User.find().or([{ name: param }, { nickname: param }]) .then(users => { /*logic here*/ }) .catch(error => { /*error logic here*/ })
몽구스 쿼리에 대한 자세한 읽어보십시오.
-
==============================
3.MongoDB의 문서에 따르면 : "... 그 MongoDB를위한 사용 인덱스로, 인 것은 $ 또는 식의 $ 또는 식 인덱스 지원해야합니다 모든 조항을 평가합니다."
MongoDB의 문서에 따르면 : "... 그 MongoDB를위한 사용 인덱스로, 인 것은 $ 또는 식의 $ 또는 식 인덱스 지원해야합니다 모든 조항을 평가합니다."
그래서 다른 필드에 인덱스를 추가하고 작동합니다. 나는 비슷한 문제를 가지고이 그것을 해결했다.
당신은 더 여기 읽을 수 있습니다 : https://docs.mongodb.com/manual/reference/operator/query/or/
from https://stackoverflow.com/questions/7382207/mongooses-find-method-with-or-condition-does-not-work-properly by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 유성 / 게시 고유의 클라이언트 측 콜렉션에 대한 전략을 구독 (0) | 2019.12.16 |
---|---|
[MONGODB] MongoDB의에서 수집 이름에 규칙이 있습니까? (0) | 2019.12.16 |
[MONGODB] 몽구스 삭제 (풀) 배열 내의 문서는 OBJECTID 작동하지 않는다 (0) | 2019.12.16 |
[MONGODB] MongoDB를 실행하고 있습니까? (0) | 2019.12.16 |
[MONGODB] MongoDB의에서 중복 레코드 찾기 (0) | 2019.12.16 |