[MONGODB] MongoDB를하고 Nodejs으로 삽입 및 쿼리 날짜
MONGODBMongoDB를하고 Nodejs으로 삽입 및 쿼리 날짜
나는 MongoDB를하고 nodejs에서 날짜별로 기록을 찾는 데 도움이 필요합니다.
다음과 같이 내가 긁어 스크립트에서 JSON 객체에 날짜를 추가 :
jsonObj.last_updated = new Date();
이 개체는 MongoDB를 삽입됩니다. 다음과 같이 나는 그것을 볼 수 있습니다 :
"last_updated" : "2014-01-22T14:56:59.301Z"
그럼 내 nodejs 스크립트에서 나는) (A findOne을 수행합니다
var jObj = JSON.parse(line.toString());
collection.findOne(jObj,function(err, doc) {
if (doc){
console.log(doc._id);
} else {
console.log('not found');
}
});
개체를 찾을 수 없습니다. 나는 개체에서 LAST_UPDATED 필드를 제거하면이 문제가 어디에 확실히 그래서 발견된다.
I 필드를 분리하면 다음과 같습니다 :
collection.findOne({last_updated: '2014-01-22T14:56:59.301Z'},function(err, doc) {
if (doc){
console.log(doc._id);
} else {
console.log('not found');
}
});
아무것도 중 하나를 다시 온다. 어떻게 내가 잘못 제발 뭐하는 거지?
해결법
-
==============================
1.당신은 날짜 객체가 아닌 날짜 문자열을 전달해야합니다.
당신은 날짜 객체가 아닌 날짜 문자열을 전달해야합니다.
collection.findOne({last_updated: new Date('2014-01-22T14:56:59.301Z')},function(err, doc) {
MongoDB의 드라이버는 ISODate로 변환합니다 :
{ "_id" : ObjectId("52dfe0c469631792dba51770"), "last_updated" : ISODate('2014-01-22T14:56:59.301Z') }
이러한 질문을 확인 :
-
==============================
2.명확합니다. 알고 중요한 것은 즉 :
명확합니다. 알고 중요한 것은 즉 :
여기에 우리가 몽고가 제대로 처리 할 수 있도록 날짜 조작의 작은 비트를 할 코드의 작업 조각입니다. 이 예제에서는 몽구스 모듈을 사용하여 날짜 속성보다 작은 행에 대한 결과 싶어하고 (즉. 전) MyDate가 PARAM로 주어진 날짜를.
var inputDate = new Date(myDate.toISOString()); MyModel.find({ 'date': { $lte: inputDate } })
-
==============================
3.나는 최근에 같은 문제로 실행하고 나는 몇 가지 추가 정보를 추가하고 싶었다.
나는 최근에 같은 문제로 실행하고 나는 몇 가지 추가 정보를 추가하고 싶었다.
두 가지 방법으로 날짜를 삽입 할 수 있습니다 :
예 : 새로운 객체와 시간 삽입을 스탬프
db.collection('mycollection').findOneAndUpdate({'name': req.body.name}, { // only "update" if it's an insert, meaning name is not found $setOnInsert: { 'name': req.body.name, 'date_added': new Date() } }, { upsert: true }, (err, result) => { if(err) return res.send(err); res.send(result); });
예:
// Send POST Request here fetch('addDate', { method: 'post', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({ 'date_added': new Date() }) })
1.과 2.를 들어 당신은을 사용하여 날짜를 만들 상기 응답에 설명 된대로 새로운 기능 일 ( '59.301Z 2014-01-22T14 : 56'). MongoDB의 차이는 다음을 사용하여 서버 측에서 1과 그것을 할 경우 MongoClient이가 ISODate ( ': 56 59.301Z 2014-01-22T14')로 저장됩니다 패키지이다. '2014-01-22T14를 : 56 : 59.301Z'당신은 문자열로 저장됩니다 클라이언트 측에서 2와 그것을 할 경우 MongoDB를한다.
( ': 56 : 59.301Z 2014-01-22T14') 또는 ISODate ( '59.301Z 2014-01-22T14 : 56')에 ISODate 새로운 날짜를 사용할 필요가 오브젝트를 조회하려면 당신은 그냥 문자열을 사용하는 문자열을 조회하려면 '2014-01-22T14 : 56 : 59.301Z를'
여기에 몽고 쉘을 사용하여 일부 쿼리 샘플은 다음과 같습니다 :
문자열로 저장 날짜 :
db.mycollection.findOne({date_added {$gte:'2018-06-22T00:07:53.688Z'}})
이 반환
{ "_id" : ObjectId("5b2c3dd90078ce3cd484ef21"), "name" : "alfons", "date_added" : "2018-06-22T00:07:53.688Z" }
ISODate로 저장 날짜 :
db.mycollection.findOne({date_added: {$lte: ISODate('2018-06-26T23:24:37.023Z')}})
또는 그 대신 "새 날짜"를 사용하여 :
db.mycollection.findOne({date_added: {$lte: new Date('2018-06-26T23:24:37.023Z')}
이 반환 :
{ "_id" : ObjectId("5b2bb21e1954b104e61ff735"), "name" : "ceasar", "date_added" : ISODate("2018-06-21T14:11:41.323Z") }
-
==============================
4.) (Date.now에 스키마과 가치에 기본 키를 추가
) (Date.now에 스키마과 가치에 기본 키를 추가
from https://stackoverflow.com/questions/21286599/inserting-and-querying-date-with-mongodb-and-nodejs by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 문제는 유성의 예제를 실행하기 (0) | 2019.12.09 |
---|---|
[MONGODB] 어떻게 다른 시간대에 년 - 월 - 일까지 집계합니다 (0) | 2019.12.09 |
[MONGODB] 어떻게 몽구스와 데이터베이스를 제거하려면? (0) | 2019.12.09 |
[MONGODB] Node.js를의 동기 MongoDB의 쿼리를 만들 수있는 올바른 방법은 무엇입니까? (0) | 2019.12.09 |
[MONGODB] MongoDB의에 포함 된 문서를 필터링 (0) | 2019.12.09 |