2015-06-23 19 views
10

Tôi có một truy vấn mà tôi cần để có được các sự kiện đó là một ngày trước hoặc sau một ngày cụ thể. Tôi cần cộng hoặc trừ một ngày vào biến ISODate đó. Đây là truy vấn của tôi:Thêm/Trừ các ngày để ISODate trong MongoDB Shell

db.event.find().forEach(function (x) { 

    print("x : " + x.EventID + ", " + x.ISODate); 
    db.events.find({ 
    "$or" : [{ 
     "StartDate" : { "$gte" : x.ISODate } // Here i need to subtract one day 
     }, { 
      "EndDate": { "$lt" : x.ISODate} // Here i need to add one day 
      }] 
}).forEach(function(otherDay) { 
     print("x.EventID : " + x.EventID + ", other.Date : " + otherDay.StartDate + " - " + otherDay.EndDate); 
     }); 

}); 

Làm cách nào để thêm hoặc bớt ngày vào biến ISOD trong vỏ mongodb?

+0

Giúp tôi hiểu câu hỏi của bạn ở đây: bạn muốn tìm kiếm sự kiện mà đã một 'StartDate' lớn hơn hoặc tương đương với một ngày cụ thể, nói 'ISODate (" 2015-06- 21T23: 59: 59.999Z ")' HOẶC một 'EndDate' nhỏ hơn' ISODate ("2015-06-21T00: 00: 00.000Z") '? – chridam

+0

Tôi muốn nhận các sự kiện giữa ngày bắt đầu và ngày kết thúc. Tôi đoán nó đã sai trong câu hỏi và tôi đã chỉnh sửa. Tôi muốn trừ khỏi startdate và thêm vào enddate. – cuneytyvz

Trả lời

13

này đã được trả lời trên Query to get last X minutes data with Mongodb

query = { 
    timestamp: { // 18 minutes ago (from now) 
     $gt: new Date(ISODate().getTime() - 1000 * 60 * 18) 
    } 
} 

Và trong trường hợp của bạn, đối với một số ngày:

"StartDate" : { "$gte" : new Date(ISODate().getTime() - 1000 * 3600 * 24 * 3) } 

hay

"StartDate" : { "$gte" : new Date(ISODate().getTime() - 1000 * 86400 * 3) } 

(ở đây là số ngày của bạn)

6

Không phải là câu trả lời chính xác nhưng có liên quan.

Tôi cần tăng trường ngày cho tất cả các mục trong bộ sưu tập mongodb. Sử dụng trừ nếu bạn cần trừ.

Các truy vấn dưới đây sẽ thêm 1 ngày-myDateField trong myCollection.

db.myCollection.find().snapshot().forEach(
    function (elem) { 
     db.myCollection.update(
      { 
       _id: elem._id 
      }, 
      { 
       $set: { 
        myDateField: new Date(elem.myDateField.getTime() + 1*24*60*60000) 
       } 
      } 
     ); 
    } 
); 

1 day = 1*24*60*60000 = 1 x 24 hours x 60 minutes x 60 seconds x 1000 milliseconds 
Các vấn đề liên quan