2017-06-05 35 views
0

我想寫一個查詢,我們有兩種類型的僱員存儲在數據庫中。我想要列出所有員工按其開始日期排序的列表,但如果員工處於「合同」狀態,那麼我只想包括那些結束日期仍然未來的員工。如何編寫MongoDB查詢來選擇性篩選

這樣一個集合的例子是:

{ 
    "_id": 123, 
    "startDate": some date 
    "endDate": some date 
    "type": 「FULL_TIME", 
}, 
{ 
    "_id": 123, 
    "startDate": some date 
    "endDate": some date 
    "type": 「CONTRACT", 
}, 

回答

2

你可以試試下面$or查找查詢。

第一個條件得到所有活動的CONTRACT僱員和第二部分得到所有FULL_TIME僱員後asc排序startDate

db.collection.find(
    { $or: 
    [ 
     { $and: 
     [ 
      { type: "CONTRACT" }, 
      { endDate: { $gt: new ISODate() } } 
     ] 
     }, 
     { type:"FULL_TIME" } 
    ] 
    } 
).sort({ startDate: 1 });