Извлекать записи, если поле существует в mongodb

#mongodb

#mongodb

Вопрос:

У меня есть этот запрос

 db.invites.find({$and: [{primaryowner: mynumber}, {invited: mynumber}]})
  

который я использую для извлечения записей, если они удовлетворяют приведенным выше условиям.Тем не менее, я хотел бы извлекать записи, где {eventtype:4} и поле primaryowner:$exists: true

Это то, что у меня есть

 { eventtype: 4 },{ primaryowner: { $exists: true }}
  

но я знаю, что это не так, потому что мне нужно извлекать записи, где eventtype = 4 и поле primaryowner существует.

Как я могу представить запрос ?.

Комментарии:

1. Вы спрашиваете db.invites.find({$and: [{eventtype: 4}, { primaryowner: { $exists: true }}]}) ? Ваш вопрос действительно не ясен…

2. Опубликуйте свой образец документа и ожидаемый результат здесь

3. @ClementAmarnath Это мое утверждение db.invites.find({invited:"0800123456",{$and: [{eventtype: "4"},{primaryowner: { $exists: true }}]}.pretty() , я ожидаю получить записи, в которых приглашено 0800123456 и eventtype = 4, где в этой строке есть поле primaryowner

4. получаете ли вы ожидаемый ответ? также опубликуйте образец документа из вашей коллекции

5. @ClementAmarnath Хорошо, я публикую некоторые данные.

Ответ №1:

Из вашего вопроса я не смог четко понять, что такое требуемый бизнес-сценарий, но с предоставленными примерами данных я дал псевдокод и соответствующую реализацию mongodb этого псевдокода.

 if invited field is "0800123456" 
   if event type is 3 and event status is 11
     select matching documents
or if event type is 4 and event status is 11 and primary owner exists
     select matching documents
  

Запрос Mongo DB

 db.collection.find({
  $or: [
    {
      $and: [
        {
          "invited": "0800123456"
        },
        {
          "eventtype": {
            $eq: "3"
          }
        },
        {
          "eventstatus": {
            $eq: 11
          }
        }
      ]
    },
    {
      $and: [
        {
          "eventtype": {
            $eq: "4"
          }
        },
        {
          "eventstatus": {
            $eq: 11
          }
        },
        {
          primaryowner: {
            $exists: true
          }
        }
      ]
    }
  ]
})
  

Если это не соответствует вашему сценарию, напишите свой собственный запрос с помощью этого примера кода.

Надеюсь, это поможет!