@skynet32rus
*spoiler*

Как выполнить поиск с полным совпадением по массиву?

Есть модель
Schema({
  members: [
    {
      type: String,
      required: true,
      ref: "User"
    }
  ],
  createdAt: {
    type: Date,
    default: Date.now(),
    required: true
  },
  lastMessage: {
    message: {
      type: String,
      required: true
    },
    from: {
      type: String,
      required: true
    },
    createdAt: {
      type: Date,
      required: true
    }
  },
  messages: [
    {
      createdAt: {
        type: Date,
        required: true
      },
      message: {
        type: String,
        required: true
      },
      from: {
        type: String,
        ref: "User",
        required: true
      }
    }
  ]
});


Примерно такой код я ипользую для поиска
Chats.countDocuments(
      {
        members: {
          $in: ["userIdOne", "userIdTwo"]
        }
      },
      cb
    )


Проблема в том что поиск идет не по полному совпадению параметра $in. Если будет несколько документов, где в members будет хоть один параметр userId... из $in то поиск это покажет.

Мне же нужно что бы если я задал два параметра то нужно вывести только те документы где есть только именно два этих параметра, то есть по полному совпадению.
  • Вопрос задан
  • 15 просмотров
Пригласить эксперта
Ответы на вопрос 1
@skynet32rus Автор вопроса
*spoiler*
Нашел решение.
Надо использовать $all вместо $in
Chats.countDocuments(
  {
    members: {
      $all: ["userIdOne", "userIdTwo"]
    }
  },
  cb
)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы