[MONGODB] MongoDB를에 정렬 사례를 구분
MONGODBMongoDB를에 정렬 사례를 구분
어떻게은 대문자와 소문자를 구별하지 않고, 주어진 필드에 의해 MongoDB의 모음을 정렬 할 수 있습니다? 기본적으로 나는-Z 전에 A-Z를 얻을.
나는 자바를 사용하고 있습니다.
해결법
-
==============================
1.최신 정보: 지금은 대소 문자를 구분 인덱스가 MongoDB를 현재로 :
최신 정보: 지금은 대소 문자를 구분 인덱스가 MongoDB를 현재로 :
Users.find({}) .collation({locale: "en" }) .sort({name: 1}) .exec() .then(...)
껍질:
db.getCollection('users') .find({}) .collation({'locale':'en'}) .sort({'firstName':1})
업데이트 :이 답변은 3.4 사례를 구분 인덱스를해야합니다, 날짜를 벗어났습니다. https://jira.mongodb.org/browse/SERVER-90 자세한 내용은 JIRA에 봐
불행하게도 MongoDB를 아직 대소 문자를 구분 인덱스가되지 않습니다 https://jira.mongodb.org/browse/SERVER-90을하고 작업은 (는) 기선을 제압했습니다.
이 수단 종류의 케이스에있는 유일한 방법은 영향을받지 현재 실제로 특정을 만드는 것입니다 문제의 정렬 필드의 (물론 맡았다 낮은) 값을 복사하고 그 대신에 정렬 "맡았다 하한"필드.
-
==============================
2.정렬은 MongoDB의에 같은 작업을 수행하지만 당신은 골재와 플라이에서이 작업을 수행 할 수 있습니다 :
정렬은 MongoDB의에 같은 작업을 수행하지만 당신은 골재와 플라이에서이 작업을 수행 할 수 있습니다 :
다음과 같은 데이터를 가지고 :
{ "field" : "BBB" } { "field" : "aaa" } { "field" : "AAA" }
다음 문을 그래서 :
db.collection.aggregate([ { "$project": { "field": 1, "insensitive": { "$toLower": "$field" } }}, { "$sort": { "insensitive": 1 } } ])
같은 결과를 생성합니다 :
{ "field" : "aaa", "insensitive" : "aaa" }, { "field" : "AAA", "insensitive" : "aaa" }, { "field" : "BBB", "insensitive" : "bbb" }
삽입의 실제 순서는 변환 될 때 동일한 키에 따른 어떤 값으로 유지 될 것이다.
-
==============================
3.이 MongoDB를 JIRA에 꽤 오랜 시간 동안 문제 였지만 지금은 해결된다. 자세한 설명서이 릴리스 노트를 살펴 보자. 당신은 정렬을 사용합니다.
이 MongoDB를 JIRA에 꽤 오랜 시간 동안 문제 였지만 지금은 해결된다. 자세한 설명서이 릴리스 노트를 살펴 보자. 당신은 정렬을 사용합니다.
User.find() .collation({locale: "en" }) //or whatever collation you want .sort({name:1}) .exec(function(err, users) { // use your case insensitive sorted results });
-
==============================
4.현재로서는 (MongoDB를 4) 다음을 수행 할 수 있습니다 :
현재로서는 (MongoDB를 4) 다음을 수행 할 수 있습니다 :
몽고 쉘 :
db.getCollection('users') .find({}) .collation({'locale':'en'}) .sort({'firstName':1});
몽구스:
Users.find({}) .collation({locale: "en" }) .sort({name: 1}) .exec() .then(...)
여기에 MongoDB에 의해 언어와 로케일을 지원합니다.
-
==============================
5.여기 자바입니다. 나는 더-인수 및 단지 다양한 BasicDBObject의 첫 번째 키 - 발 변형을 혼합하지
여기 자바입니다. 나는 더-인수 및 단지 다양한 BasicDBObject의 첫 번째 키 - 발 변형을 혼합하지
DBCollection coll = db.getCollection("foo"); List<DBObject> pipe = new ArrayList<DBObject>(); DBObject prjflds = new BasicDBObject(); prjflds.put("field", 1); prjflds.put("insensitive", new BasicDBObject("$toLower", "$field")); DBObject project = new BasicDBObject(); project.put("$project", prjflds); pipe.add(project); DBObject sort = new BasicDBObject(); sort.put("$sort", new BasicDBObject("insensitive", 1)); pipe.add(sort); AggregationOutput agg = coll.aggregate(pipe); for (DBObject result : agg.results()) { System.out.println(result); }
-
==============================
6.코드 .collation ({ '지역': 'EN'을}) 추가하면 내 문제를 해결하는 데 도움을 주었다.
코드 .collation ({ '지역': 'EN'을}) 추가하면 내 문제를 해결하는 데 도움을 주었다.
-
==============================
7.몽구스에서 -
몽구스에서 -
Customer.find() .collation({locale: "en" }) .sort({comapany: 1})
-
==============================
8.우리는 자바 스크립트 배열의 .sort 기능의 도움으로이 문제를 해결하기
우리는 자바 스크립트 배열의 .sort 기능의 도움으로이 문제를 해결하기
여기에 코드입니다
function foo() { let results = collections.find({ _id: _id }, { fields: { 'username': 1, } }).fetch(); results.sort((a, b)=>{ var nameA = a.username.toUpperCase(); var nameB = b.username.toUpperCase(); if (nameA nameB) { return 1; } return 0; }); return results; }
from https://stackoverflow.com/questions/22931177/case-insensitive-sorting-in-mongodb by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] "ID"와 "_id"필드 MongoDB의에서 차이 (0) | 2019.12.17 |
---|---|
[MONGODB] MongoDB를 가진 고유 ID (0) | 2019.12.17 |
[MONGODB] 문서에서 다른 필드의 값을 업데이트 필드 [중복] (0) | 2019.12.17 |
[MONGODB] PHP MongoDB를 : 치명적인 오류 : 클래스 'MongoClient'을 (를) 찾을 수 없습니다 (0) | 2019.12.17 |
[MONGODB] 몽고 그룹 푸시 : 모든 필드를 밀어 (0) | 2019.12.17 |