2017-06-05 67 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 });