使用和mongodb的$ nin和

时间:2016-10-27 16:48:34

标签: mongodb

我有一个用于组织黑客马拉松事件的应用程序,这是mongodb架构

{
    "_id": "cZpRg4Qa8JPRAJojE",
    "lat": "-1.981388262628872",
    "lng": "36.29487934112549",
    "eventownernumber": "0800123456",
    "eventownernames": "Kraufe",
    "eventtitle": "first test",
    "eventtime": "05:02",
    "invited": "0",
    "eventduration": "5",
    "eventtype": "private",
    "eventcategory": "hackathon",
    "eventstatus": "11",
    "eventoriginalid": "0",
    "eventjoinernumber": "0",
    "eventjoinernames": "0",
    "eventjoindate": "0",
    "eventleavedate": "0",
    "createdAt": {
        "$date": "2016-10-27T16:33:57.365Z"
    }
}

我正在地图上显示黑客马拉松事件。

我想使用此条件显示事件。用户使用电话号码注册。

**

  
      
  1. 显示邀请的所有活动
  2.   
  3. 显示我创建的所有活动
  4.   
  5. 显示我的号码不是其中之一的所有公共活动(请忽略我自己创建的公共活动)
  6.   

**

这是我写的查询

Events.find({
    {eventownernumber: '0800123456',eventstatus:11 },
    {invited:'0800123456',eventstatus:11},
    {eventtype:'public',eventownernumber:{$nin:['0800123456']},eventstatus:11 }
    });

eventstatus:11中,11表示有效的黑客马拉松事件。

当我运行我的查询时,我得到意外的字符错误(错误指向我的一个查询行);

我该如何更正我的查询?。

1 个答案:

答案 0 :(得分:0)

根据我的理解,如果其中一个条件通过,您想要显示该事件。因此,您可以尝试使用$or运算符:

Events.find({
    $or: [
      {eventownernumber: '0800123456',eventstatus:11 },
      {invited:'0800123456',eventstatus:11},
      {eventtype:'public',eventownernumber:{$ne:'0800123456'},eventstatus:11 }
    ]
});