현재 데이터베이스를 연구하고 있으며 주어진 프로젝트에 대한 적합성을 조사하기 위해 pymongo 라이브러리를 사용하여 다양한 쿼리를 시도하고 있습니다.pymongo 집계 쿼리에서 자바 스크립트 포함
내 타임 스탬프는 밀리 초 정수 형식으로 저장되며 일별 집계 쿼리로 간단한 판매를하고 싶습니다. 나는 here (answer by Alexandre Russel)에서 타임 스탬프가 BSON 형식으로 업로드되지 않았기 때문에 날짜와 시간 함수를 사용하여 저장소를 만들 수는 없지만 임베디드 자바 스크립트를 사용하여 타임 스탬프를 조작 할 수 있음을 알고 있습니다.
는 이와 같이 나는 다음과 같은 쿼리를 작성했습니다 :
[{
"$project": {
"year": {
"$year": {
"$add": ["new Date(0)", "$data.horaContacto"]
}
},
"month": {
"$month": {
"$add": ["new Date(0)", "$data.horaContacto"]
}
}
}
}, {
"$group": {
"_id": {
"year": "$year",
"month": "$month"
},
"sales": {
"$sum": {
"$cond": ["$data.estadoVenta", 1, 0]
}
}
}
}]
을하지만,이 오류를 얻을 : 일이 뭐죠 나는 JS "new Date(0)"
는 몽고의 드라이버로 해석되고 있다는 생각
pymongo.errors.OperationFailure: exception: $add only supports numeric or date types, not String
을 js로 적용되지 않는 문자열. 뒤집힌 큰 따옴표를 캡슐화하면 파이썬은이 코드와 오류를 적절하게 해석하려고 시도합니다. 이것은 하나의 예일 뿐이며 앞으로의 테스트에서 질의에 더 많은 j를 포함하고 싶지만 파이썬에서 훌륭하게 재생할 수있는 방법을 발견 할 수 없습니다.
- 내가 오류를 가정에서 올바른있어이 몽고는 문자열로 JS를 해석하고 직접 요약하려고하기 때문에 발생하는 경우
은 아무도 알고 있나요
? - 내가 문구로 나타낼 수 있다면 JS는 파이썬이 아니고 파이썬 없이는 코드를 intepret하려고합니까?
지금까지 Google과 단일 및 이중 부정사 쉼표의 다양한 조합을 통해 검색해 보았습니다. 아래에 붙여
무작위로 생성 된 테스트 데이터의 몇 행이 필요한 경우입니다 :
감사합니다,
제임스
{'_id': 0,'data': {'edad': '74','estadoVenta': True,'visits': [{'visitLength': 1819.349246663518,'visitNo': 1,'visitTime': 1480244647948.0}],'apellido2': 'Aguilar','apellido1': 'Garcia','horaContacto': 1464869545373.0,'preNombre': 'Agustin','_id': 0,'telefono': 630331272,'location': {'province': 'Aragón','city': 'Zaragoza','type': 'Point','coordinates': [-0.900203, 41.747726],'country': 'Spain'}}},
{'_id': 1,'data': {'edad': '87','estadoVenta': False,'visits': [{'visitLength': 2413.9938072105024,'visitNo': 1,'visitTime': 1465417353597.0}],'apellido2': 'Torres','apellido1': 'Acosta','horaContacto': 1473404147769.0,'preNombre': 'Sara','_id': 1,'telefono': 665968746,'location': {'province': 'Galicia','city': 'Cualedro','type': 'Point','coordinates': [-7.659321, 41.925328],'country': 'Spain'}}},
{'_id': 2,'data': {'edad': '48','estadoVenta': True,'visits': [{'visitLength': 2413.9938072105024,'visitNo': 1,'visitTime': 1465415138597.0}],'apellido2': 'Perez','apellido1': 'Sanchez','horaContacto': 1473404923569.0,'preNombre': 'Sara','_id': 2,'telefono': 665967346,'location': {'province': 'Galicia','city': 'Barcelona','type': 'Point','coordinates': [-7.659321, 41.925328],'country': 'Spain'}}}
감사 A. 제시 Jiryu 데이비스, 일을 내가 learn't. 'epoch = datetime.datetime.fromtimestamp (0, pytz.utc)'와 같이'import pytz'와 조정 신기원을 포함하는 것이 필요했습니다. –