使用逻辑条件AND查找或查询Mongodb数据

时间:2018-03-03 11:47:17

标签: mongodb

我的Mongo数据是这样的

checkin : ['2018-2-28 5:12','2018-2-28 5:13','2018-2-28 5:14']

我有2个阵列:

  1. checkout : ['2018-2-28 6:12','2018-2-28 6:13','2018-2-28 6:14']
  2. email
  3. 我的查询是db.getCollection('test').find({checkin : {$in: checkin}}, {"email": 1, "_id": 0})

    example@gmail.com test@gmail.com
    

    我得到了结果

    email

    现在,我遇到了一个问题。我想找到checkin得到checkoutemail。 这意味着只有checkin - checkin arraycheckout - checkout array

    中的db.getCollection('test').find({checkin : {$in: checkin}},{checkout : {$in: checkout}}, {"email": 1, "_id": 0}) 才有价值

    我试过这个查询但不行

    @RestController
    @RequestMapping("/item")
    public class ItemController {
    
      @Autowired private ItemService itemService;
    
      @RequestMapping(method = RequestMethod.GET)
      public List<Item> getAllItems() {
        return itemService.getItems(LocalDate.now());
      }
    
      @RequestMapping(method = RequestMethod.GET, path = "/{date}")
      public List<Item> getItemByDate(
          @PathVariable(value = "date") LocalDate itemDate) {
        return itemService.getItems(itemDate);
      }
    }
    

1 个答案:

答案 0 :(得分:1)

--re-interval

如果'checkin'和'checkout'两个数组都存在,这个qyery会返回电子邮件。 如果你想检查数组的大小,你可以使用

db.getCollection('test').find(
 { $and: [
          {'checkin' : {$exists: true}},
          {'checkout' : {$exists: true}} 
        ] 
},
{
  'email':1
//just set email:1 to get only email in projection
})