[MONGODB] 그것은 MongoDB를-쿼리에 캐스팅 할 수 있습니까?
MONGODB그것은 MongoDB를-쿼리에 캐스팅 할 수 있습니까?
언제 이런 두 MongoDB의 문서를 가지고 ...
db.test.insert( {"value" : "10123"} );
db.test.insert( {"value" : "160"} );
같은 쿼리의 결과 :
db.test.find({"value" :{$gt : "12"} });
입니다 ..
{ "_id" : ObjectId("4c6d1b92304326161b678b89"), "value" : "160" }
그것은 내 첫 번째 값이 반환되지 않습니다 그래서, 문자열 비교가 이루어지는 것이 분명합니다. 쿼리 내에서 주조하는 방법은 없나요?
뭔가 같은 :
db.test.find({ (int) "value" :{$gt : 12} });
좋은 것입니다. 같은 쿼리
db.test.find({"value" :{$gt : 12} }); // without the quotes around "12"
아무 것도 반환하지 않습니다.
해결법
-
==============================
1.다음과 같은 자바 스크립트 표현식을 사용할 수 있습니다 :
다음과 같은 자바 스크립트 표현식을 사용할 수 있습니다 :
db.test.find("this.value > 12")
이 숫자 문자열에서 자바 스크립트의 자동 변환을 사용합니다.
-
==============================
2.나는 비슷한 해결 방법을 가지고, 난 당신이 몽고 쉘을 사용할 수 있다면, 당신은 자바 스크립트에서이 작업을 수행 할 수있는 문을 쓸 수있는 것을 발견,하지만 인덱스를 사용할 수있는.
나는 비슷한 해결 방법을 가지고, 난 당신이 몽고 쉘을 사용할 수 있다면, 당신은 자바 스크립트에서이 작업을 수행 할 수있는 문을 쓸 수있는 것을 발견,하지만 인덱스를 사용할 수있는.
var myItems = [] var it = db.test.find({},{value:1}) while (it.hasNext()){ var item = it.next(); if(parseInt(item.value) > 12) myItems.push(item); }
이 빨리 이전 솔루션에 비해 실행하려면 값 필드에 인덱스를 확인해야합니다.
-
==============================
3.INT 사용이로 문자열을 변환하려면
INT 사용이로 문자열을 변환하려면
db.test.find({'year': {$type: 2}}).forEach( function (x) { x.value=new NumberInt(x.value); db.test.save(x)} )
그리고 이후에 직접처럼 조회 수 :
db.test.find({"value" :{$gt : 12} });
-
==============================
4.$이된다 유즈 케이스에 대해 설정되지 않았다. 당신은 문자열 정규식 사용해야합니다. 아마 쉽게 그냥 숫자로 번호가 새 필드를 만들 수 있습니다.
$이된다 유즈 케이스에 대해 설정되지 않았다. 당신은 문자열 정규식 사용해야합니다. 아마 쉽게 그냥 숫자로 번호가 새 필드를 만들 수 있습니다.
from https://stackoverflow.com/questions/3521601/is-it-possible-to-cast-in-a-mongodb-query by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] MongoDB를하고 드라이버는 문서 요소의 순서를 보존 할 수 있습니다 (0) | 2019.12.25 |
---|---|
[MONGODB] 이 쿼리 구문 에러를 mongoexport : 예기치 않은 식별자 (0) | 2019.12.25 |
[MONGODB] 어떻게 Node.js를에서 MongoDB를 지수 자바 스크립트 객체에 속성의 순서를 지정할 수 있습니다? (0) | 2019.12.25 |
[MONGODB] 루프의 모든 몽고의 컬렉션을 통해 쿼리 실행 (0) | 2019.12.25 |
[MONGODB] 주변의 플레이어와 몽고의 순위 리더 (0) | 2019.12.25 |