繁体   English   中英

MongoDB 找到一个数组,该数组包含另一个数组中的一个元素

[英]MongoDB find an array that contains one of the elements from another array


我正在做一个学校项目,但我被困住了:(
当 url 为“.../?liked=true”时,我只想显示 likeInterns。
LikeInterns 是一个 ID = ['628f8f1f7a7a944bd8927c1b', '6291241d80feece846cbc104', '628f8f1f7a7a944bd8927c1a'] 的数组
我找不到 MongoDB 的正确查询,“$elemMatch:likeInterns”不起作用 我想找到一个包含来自 likeInterns 数组的元素之一的 Intern 数组。 请帮忙
 const likedInterns = company.likedInterns; const liked = url.searchParams.get("liked"); const interns = await db.models.intern .find( search ? { name: { $regex: new RegExp(search, "i") }, } : {} /* Show only liked interns - Not working */, liked ? { _id: { $elemMatch: likedInterns }, } : {} ) .sort({ updatedAt: -1 }); return [interns, tags, userId, companyId]; }

尝试在查询之前构建filter并使用$in运算符

const likedInterns = company.likedInterns;
const liked = url.searchParams.get('liked');
let filter = {};
if (search) filter = { ...filter, name: { $regex: new RegExp(search, 'i') } }
if (liked) filter = { ...filter, { _id: { $in: likedInterns } } }
const interns = await db.models.intern
  .find(filter)
  .sort({ updatedAt: -1 });
return [interns, tags, userId, companyId];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM