model.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);
query.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 this
我想过滤数组,如果相同的精确值与记录匹配,它必须返回,否则它不能返回记录,就像我有3个id为[123456789]的用户,并且我搜索用户[1234556],那么它不能返回任何记录,直到我没有输入精确匹配的记录。我遇到了问题,因为它只检查[123456]是否存在,然后它匹配记录忽略其他值,但它必须与user_id 完全匹配
您可以使用聚合运算符$setEquals
来检查两个数组是否相等,
return await group.findOne({
$expr: {
$setEquals: ["$users.user_id", groupprops]
}
}).exec();
游乐场