[MONGODB] 예외 : 날짜에 BSON 유형 EòÒ에서 변환 할 수 없습니다
MONGODB예외 : 날짜에 BSON 유형 EòÒ에서 변환 할 수 없습니다
나는 다음과 같은 집계 쿼리를 실행하는 문제가 무엇입니까 :
db.snippets.aggregate([ { '$project': { month: { '$month': '$created_at' }} } ])
동일에 대한 오류 메시지 :
assert: command failed: {
"errmsg" : "exception: can't convert from BSON type EOO to Date",
"code" : 16006,
"ok" : 0 } : aggregate failed
이 문제를 어떻게 주위를받을 수 있나요. 나는 관련 질문을 발견
관련 스택 오버플로 질문
그러나 일을 수행하는 방법을 말해주지 않습니다.
해결법
-
==============================
1.당신은 가능성이 BSON 날짜 아니에요 created_at 값을 갖는 하나 개 이상의 문서가 있고 날짜에 그 값을 변환하거나 제거하는 것이 문제를 해결해야합니다.
당신은 가능성이 BSON 날짜 아니에요 created_at 값을 갖는 하나 개 이상의 문서가 있고 날짜에 그 값을 변환하거나 제거하는 것이 문제를 해결해야합니다.
당신은 같은 $ 유형의 연산자를 사용하는 $하지 쿼리와 그 문서를 찾을 수 있습니다 :
db.snippets.find({created_at: {$not: {$type: 9}}})
created_at 값은 날짜 문자열이 있다면, 당신은 다음의 필요성 업데이트와 같이 코드를 사용하여 쉘을 업데이트하는 문서를 찾을 수 있습니다 :
db.snippets.find({created_at: {$not: {$type: 9}}}).forEach(function(doc) { // Convert created_at to a Date doc.created_at = new Date(doc.created_at); db.snippets.save(doc); })
-
==============================
2.어떤 경우에는, 일부 문서는 빈 날짜 필드가로되어있다. 이러한 경우에, 당신은 (당신의 예를 사용)을 시도 할 수 있습니다 :
어떤 경우에는, 일부 문서는 빈 날짜 필드가로되어있다. 이러한 경우에, 당신은 (당신의 예를 사용)을 시도 할 수 있습니다 :
db.snippets.aggregate([ { '$project': { month: { $cond: [{ $ifNull: ['$created_at', 0] }, { $month: '$created_at' }, -1] }} } ])
이 예에서 우리가 얻을 것 -1의 경우에는 필드 '$의 created_at'가 발견 될 때마다. 다른 모든 경우에, 우리는 날짜의 달 얻을 것입니다.
-
==============================
3.나는 관련 문제를했지만 오류가 "날짜에 BSON 형 개체를 변환 할 수 없습니다"였다 있도록 내 경우 날짜 필드는 배열의 회원이었다.
나는 관련 문제를했지만 오류가 "날짜에 BSON 형 개체를 변환 할 수 없습니다"였다 있도록 내 경우 날짜 필드는 배열의 회원이었다.
나는 possibleTripDateTimes 배열의 날짜에서 요일을 얻을 필요가 있었다.
샘플 문서 :
{ "possibleTripDateTimes" : [ { "tripDateTime" : ISODate("2015-08-01T06:00:00.000-0700") } ] }
수정은 배열 멤버 필드를 해결하기 위해 점 표기법을 사용하여 간단했다.
db.trips.aggregate([ { $project: { departTime: { $map: { input: "$possibleTripDateTimes.tripDateTime", as: "dateTime", in: { $dayOfWeek: "$$dateTime" } } } } } ] );
나는 이것이 또한 "BSON 타입 객체"검색에 제로 검색 결과를 얻을 수있는 사람을 도움이되기를 바랍니다
-
==============================
4.이 하나, 문제는 위의 저에 대한 도움말을보십시오.
이 하나, 문제는 위의 저에 대한 도움말을보십시오.
db.snippets.aggregate([{ '$project': { month: { $substr: ["$created_at", 5, 2] } } }]);
위의 코드 가져 오기 달 현명한
데이터는 쉽게와 함께 일 할 수 ISO 형식의 데이터베이스에 입력됩니다.
-
==============================
5.내가 날짜 필드가 변환이 실패의 원인이 문서의 일부가 누락되는 생각, 같은 문제가 있었다. 난 그냥이를 필터링 일치하는 조항을 추가했다. 난 내 응용 프로그램 측에서 조사하고 당연히하지만 그들은 채워되지 않는 이유.
내가 날짜 필드가 변환이 실패의 원인이 문서의 일부가 누락되는 생각, 같은 문제가 있었다. 난 그냥이를 필터링 일치하는 조항을 추가했다. 난 내 응용 프로그램 측에서 조사하고 당연히하지만 그들은 채워되지 않는 이유.
db.snippets.aggregate([ { '$match': { 'created_at': { "$exists": true } } }, { '$project': { month: { '$month': '$created_at' } } } ])
-
==============================
6.나는 비슷한 문제가 있고, 날짜가 존재하는 경우 확인을 해결했다.
나는 비슷한 문제가 있고, 날짜가 존재하는 경우 확인을 해결했다.
db.users.aggregate([ {$project:{day: { $cond: ["$bd", { $dayOfMonth: "$bd" }, -1] }, month: { $cond: ["$bd", { $month: "$bd" }, -1] }, year: { $cond: ["$bd", { $year: "$bd" }, -1] } }}, {$match:{"month":1, "day":15}} ])
내 날짜 필드는 BD되고 일치하는로 I 1 월 15 일에 생일이있는 모든 사용자를 얻고있다.
-
==============================
7.잘못들은 데이터베이스에 무엇으로 집계 상대에 속성 이름 한 경우에도이 오류가 나타날 수 있습니다.
잘못들은 데이터베이스에 무엇으로 집계 상대에 속성 이름 한 경우에도이 오류가 나타날 수 있습니다.
예를 들어 내 코드이었다
$group: { _id: {$week: "$projects.timeStamp"}, total: { $sum: "$projects.hours" } }
하지만 내 데이터베이스가 너무 간단하게 고정 projects.timestamp을 수정하는 타임 스탬프를 낙타 표기법하지 않았다.
-
==============================
8.첫째, 당신은 데이터 타입이 ISODate에 있는지 여부를 확인해야합니다. IF는 없습니다 다음 예와 같은 데이터 형식을 변경할 수 있습니다.
첫째, 당신은 데이터 타입이 ISODate에 있는지 여부를 확인해야합니다. IF는 없습니다 다음 예와 같은 데이터 형식을 변경할 수 있습니다.
db.collectionName.find().forEach(function(each_object_from_collection){each_object_from_collection.your_date_field=new ISODate(each_object_from_collection.your_date_field);db.collectionName.save(each_object_from_collection);})
지금 당신은 두 가지 방법으로 찾을 수 있습니다
db.collectionName.find({ $expr: {$eq: [{ $year: "$your_date_field" }, 2017]}});
또는 집단에 의해
db.collectionName.aggregate([{$project: {field1_you_need_in_result: 1,field12_you_need_in_result: 1,your_year_variable: {$year: '$your_date_field'}, your_month_variable: {$month: '$your_date_field'}}},{$match: {your_year_variable:2017, your_month_variable: 3}}])
from https://stackoverflow.com/questions/28415995/exception-cant-convert-from-bson-type-eoo-to-date by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] MongoDB의 노드 체크 OBJECTID이 유효한 경우 (0) | 2019.12.08 |
---|---|
[MONGODB] 유성 : 컬렉션, 변수, 출판 및 구독 이름 사이의 차이점은 무엇입니까? (0) | 2019.12.08 |
[MONGODB] MongoDB를 닷넷 드라이버 2.0 풀 (제거 요소) (0) | 2019.12.08 |
[MONGODB] 쿼리에서 MongoDB를 $에 대한 응답의 순서? [복제] (0) | 2019.12.08 |
[MONGODB] 이 개 필드를 사용하여 몽구스 지정 유효성 검사 (0) | 2019.12.08 |