[MONGODB] 두 날짜 사이의 객체를 찾기 MongoDB를
MONGODB두 날짜 사이의 객체를 찾기 MongoDB를
나는 MongoDB의 내부 트윗을 저장 해본 결과,이 같은 각 개체의 모습 :
{
"_id" : ObjectId("4c02c58de500fe1be1000005"),
"contributors" : null,
"text" : "Hello world",
"user" : {
"following" : null,
"followers_count" : 5,
"utc_offset" : null,
"location" : "",
"profile_text_color" : "000000",
"friends_count" : 11,
"profile_link_color" : "0000ff",
"verified" : false,
"protected" : false,
"url" : null,
"contributors_enabled" : false,
"created_at" : "Sun May 30 18:47:06 +0000 2010",
"geo_enabled" : false,
"profile_sidebar_border_color" : "87bc44",
"statuses_count" : 13,
"favourites_count" : 0,
"description" : "",
"notifications" : null,
"profile_background_tile" : false,
"lang" : "en",
"id" : 149978111,
"time_zone" : null,
"profile_sidebar_fill_color" : "e0ff92"
},
"geo" : null,
"coordinates" : null,
"in_reply_to_user_id" : 149183152,
"place" : null,
"created_at" : "Sun May 30 20:07:35 +0000 2010",
"source" : "web",
"in_reply_to_status_id" : {
"floatApprox" : 15061797850
},
"truncated" : false,
"favorited" : false,
"id" : {
"floatApprox" : 15061838001
}
어떻게 18시 47분 19 : 00 사이에있는 모든 개체를 찾아 체크 created_at 및 쿼리를 작성합니다? 날짜는 특정 포맷으로 저장되도록 내 문서를 업데이트해야합니까?
해결법
-
==============================
1.MongoDB의 요리 책에있는 날짜 범위 (특정 월 또는 일)를 쿼리하는 문제에 아주 좋은 설명이 있지만 아래 나 자신을 시도 뭔가이며 작동하는 것 같다.
MongoDB의 요리 책에있는 날짜 범위 (특정 월 또는 일)를 쿼리하는 문제에 아주 좋은 설명이 있지만 아래 나 자신을 시도 뭔가이며 작동하는 것 같다.
items.save({ name: "example", created_at: ISODate("2010-04-30T00:00:00.000Z") }) items.find({ created_at: { $gte: ISODate("2010-04-29T00:00:00.000Z"), $lt: ISODate("2010-05-01T00:00:00.000Z") } }) => { "_id" : ObjectId("4c0791e2b9ec877893f3363b"), "name" : "example", "created_at" : "Sun May 30 2010 00:00:00 GMT+0300 (EEST)" }
내 실험을 바탕으로 당신은 MongoDB의 지원이 있기 때문에에게 다음과 같은 원하지 않는 검색 결과를 제공하는 형식으로 날짜를 직렬화해야합니다.
items.save({ name: "example", created_at: "Sun May 30 18.49:00 +0000 2010" }) items.find({ created_at: { $gte:"Mon May 30 18:47:00 +0000 2015", $lt: "Sun May 30 20:40:36 +0000 2010" } }) => { "_id" : ObjectId("4c079123b9ec877893f33638"), "name" : "example", "created_at" : "Sun May 30 18.49:00 +0000 2010" }
두 번째 예에서는 어떤 결과가 예상하지만,받은 사람은 아직 거기 있었다. 기본 문자열 비교가 수행되기 때문입니다.
-
==============================
2.명확합니다. 알고 중요한 것은 즉 :
명확합니다. 알고 중요한 것은 즉 :
여기에 우리가 몽고을 보장하기 위해 날짜 조작의 조금을 할 코드의 작업 조각이된다 (여기 내가 몽구스 모듈을 사용하여 날짜 속성입니다 행에 대한 결과를 원하는 있어요 이하 (MyDate가 PARAM로 주어진 날짜) 이전보다) 처리 할 수 있습니다 올바르게 :
var inputDate = new Date(myDate.toISOString()); MyModel.find({ 'date': { $lte: inputDate } })
-
==============================
3.http://bsonspec.org/#/specification 정하는 MongoDB를 실제로하는 int (64)와 같은 날짜의 밀리 저장
http://bsonspec.org/#/specification 정하는 MongoDB를 실제로하는 int (64)와 같은 날짜의 밀리 저장
당신은 자신의 현지 시간대와 날짜 개체를 인스턴스화합니다 클라이언트 드라이버로 날짜를 검색 할 때, 그것은 꽤 혼란 얻을 수 있습니다. 몽고 콘솔에서 자바 스크립트 드라이버는 확실하게이 작업을 수행 할 것입니다.
당신이 당신의 시간대 걱정한다면, 다음 확인 당신이 당신이 그것을 다시 얻을 때해야하는데 무엇을 알고있다. 이것은 여전히 관계없이 날짜 객체 (I 희망)에 어떤 시간대의 같은 INT (64)에 동일시되므로, 너무 많은 쿼리에 대한 문제가 안된다. 그러나 나는 확실히 실제 날짜 객체 (문자열이 아니라)에 질의를하고 운전자가 그 일을 할 것입니다.
-
==============================
4.
db.collection.find({"createdDate":{$gte:new ISODate("2017-04-14T23:59:59Z"),$lte:new ISODate("2017-04-15T23:59:59Z")}}).count();
모음의 이름으로 컬렉션을 바꾸기 당신은 쿼리를 실행하려면
-
==============================
5.수집 게시물에서 MongoDB를 (튜토리얼 기준) 파이썬에서 두 날짜 사이의 개체를 찾기 :
수집 게시물에서 MongoDB를 (튜토리얼 기준) 파이썬에서 두 날짜 사이의 개체를 찾기 :
from_date = datetime.datetime(2010, 12, 31, 12, 30, 30, 125000) to_date = datetime.datetime(2011, 12, 31, 12, 30, 30, 125000) for post in posts.find({"date": {"$gte": from_date, "$lt": to_date}}): print(post)
여기서 { "$ GTE는"FROM_DATE는 "$ LT"TO_DATE}는 datetime.datetime 종류의면에서의 범위를 지정한다.
-
==============================
6.$ GTE와 $ LT를 사용하여 두 날짜 사이의 기록을 찾으려면이 코드를 사용 :
$ GTE와 $ LT를 사용하여 두 날짜 사이의 기록을 찾으려면이 코드를 사용 :
db.CollectionName.find({"whenCreated": { '$gte': ISODate("2018-03-06T13:10:40.294Z"), '$lt': ISODate("2018-05-06T13:10:40.294Z") }});
-
==============================
7.Moment.js과 비교 쿼리 연산자와 함께 사용
Moment.js과 비교 쿼리 연산자와 함께 사용
var today = moment().startOf('day'); // "2018-12-05T00:00:00.00 var tomorrow = moment(today).endOf('day'); // ("2018-12-05T23:59:59.999 Example.find( { // find in today created: { '$gte': today, '$lte': tomorrow } // Or greater than 5 days // created: { $lt: moment().add(-5, 'days') }, }), function (err, docs) { ... });
-
==============================
8.당신이 몽고로 채워 넣는다으로 GMT 시간대에 날짜를 변환합니다. 그 방법은 시간대 문제가 결코 아니다. 당신은 데이터가 프리젠 테이션을 위해 밖으로 철수 할 때 그럼 그냥 트위터 / 시간대 필드에서 수학을.
당신이 몽고로 채워 넣는다으로 GMT 시간대에 날짜를 변환합니다. 그 방법은 시간대 문제가 결코 아니다. 당신은 데이터가 프리젠 테이션을 위해 밖으로 철수 할 때 그럼 그냥 트위터 / 시간대 필드에서 수학을.
-
==============================
9.왜 양식 YYYYMMDDHHMMSS의 문자열을 정수로 변환하지? 시간 각 단위는 큰 정수를 만들 것이고, 대신 ISO 시간으로 변환하는 방법에 대한 걱정의 정수를 필터링 할 수 있습니다.
왜 양식 YYYYMMDDHHMMSS의 문자열을 정수로 변환하지? 시간 각 단위는 큰 정수를 만들 것이고, 대신 ISO 시간으로 변환하는 방법에 대한 걱정의 정수를 필터링 할 수 있습니다.
-
==============================
10.사용 $ GTE와 $ LTE는 MongoDB의 날짜 데이터 사이에서 찾을 수 있습니다
사용 $ GTE와 $ LTE는 MongoDB의 날짜 데이터 사이에서 찾을 수 있습니다
var tomorrowDate = moment(new Date()).add(1, 'days').format("YYYY-MM-DD"); db.collection.find({"plannedDeliveryDate":{ $gte: new Date(tomorrowDate +"T00:00:00.000Z"),$lte: new Date(tomorrowDate + "T23:59:59.999Z")}})
-
==============================
11.내가 객체가 나는 두 날짜 사이의 모든 기록 (문서)를 검색 할 나중에 만들어 지금까지 날짜를 저장할 필요가 내 요구 사항에 따라 나는이 모델에서 시도 내 HTML 파일에서 I는 다음의 형식은 mm / dd / yyyy 사용 된
내가 객체가 나는 두 날짜 사이의 모든 기록 (문서)를 검색 할 나중에 만들어 지금까지 날짜를 저장할 필요가 내 요구 사항에 따라 나는이 모델에서 시도 내 HTML 파일에서 I는 다음의 형식은 mm / dd / yyyy 사용 된
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <script> //jquery $(document).ready(function(){ $("#select_date").click(function() { $.ajax({ type: "post", url: "xxx", datatype: "html", data: $("#period").serialize(), success: function(data){ alert(data); } ,//success }); //event triggered });//ajax });//jquery </script> <title></title> </head> <body> <form id="period" name='period'> from <input id="selecteddate" name="selecteddate1" type="text"> to <input id="select_date" type="button" value="selected"> </form> </body> </html>
내 평 (파이썬) 파일에 내가 "ISO 형식"으로 변환 다음과 같은 방법으로
date_str1 = request.POST["SelectedDate1"] SelectedDate1 = datetime.datetime.strptime(date_str1, '%m/%d/%Y').isoformat()
내 컬렉션에 필드로 "되어 selectedDate"내 dbmongo 수집에 저장
내가 쿼리를 다음 사용 2 날짜 사이의 데이터 나 문서를 검색
db.collection.find( "SelectedDate": {'$gte': SelectedDate1,'$lt': SelectedDate2}})
-
==============================
12.
mongoose.model('ModelName').aggregate([ { $match: { userId: mongoose.Types.ObjectId(userId) } }, { $project: { dataList: { $filter: { input: "$dataList", as: "item", cond: { $and: [ { $gte: [ "$$item.dateTime", new Date(`2017-01-01T00:00:00.000Z`) ] }, { $lte: [ "$$item.dateTime", new Date(`2019-12-01T00:00:00.000Z`) ] }, ] } } } } } ])
from https://stackoverflow.com/questions/2943222/find-objects-between-two-dates-mongodb by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 몽구스의 채우기 후 쿼리 (0) | 2019.11.29 |
---|---|
[MONGODB] 방법 "과 같은"로 MongoDB의 쿼리를 하는가? (0) | 2019.11.29 |
[MONGODB] MongoDB를 가진 중첩 된 배열을 업데이트 (0) | 2019.11.29 |
[MONGODB] MongoDB의 관계 : 포함 또는 참조? (0) | 2019.11.29 |
[MONGODB] 어떻게 SQL은 MongoDB의에 해당하는 가입 실시합니다합니까? (0) | 2019.11.29 |