modelo.js
import mongoose from 'mongoose'; const { Schema, Types } = mongoose; const participants = { user_id: Types.ObjectId(), isAdmin: Boolean } const groupSchema = new Schema({ id: Types.ObjectId(), // String is shorthand for {type: String} name: String, users: [participants] }); export const Group = mongoose.model('Group', groupSchema);consulta.js
export const checkUser = async(groupprops) => { await return group.findOne({'participants.user_id': { $all: groupprops } }).exec(); }; // groupprops is array of user_id = ['123', '456'] like thisQuiero filtrar la matriz si el mismo valor exacto coincide con el registro, debe devolver eso, solo que de lo contrario no debe devolver el registro como si tuviera 3 usuarios de id [123, 456, 789] y busco usuarios [123, 456] entonces No debo devolver ningún registro hasta que no ingresé un registro que coincida exactamente. Tengo un problema, ya que solo existen comprobaciones de [123, 456], luego coincide con el registro, ignora otros valores, pero debe coincidir exactamente con el ID de usuario
Puede usar el operador de agregación $setEquals para verificar que la matriz sea igual,
return await group.findOne({ $expr: { $setEquals: ["$users.user_id", groupprops] } }).exec();