首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoError: Expression $in恰好接受2个参数。传入了1个。'{ $in:[ <expression>,<数组expression> ] }‘不工作

MongoError: Expression $in恰好接受2个参数。传入了1个。'{ $in:[ <expression>,<数组expression> ] }‘不工作
EN

Stack Overflow用户
提问于 2020-08-17 20:32:11
回答 1查看 465关注 0票数 0

我正在尝试运行下面的查询。update.keywordsupdate.genre是字符串数组。我使用的是MongoDB v4.4.0

代码语言:javascript
复制
let similar = await VideoSchema.find(
        { _id: { $ne: id } },
        {
          $or: [
            { influencerId: update.influencerId },
            { category: update.category },
            { keywords: { $in: [...update.keywords] } },
            { genre: { $in: [...update.genre] } },
          ],
        }
      );

我提到了这个答案,但我没有在我的查询中使用'$expr'。如何使用此查询查找所有相似的视频。如果我尝试使用{ $in: [ <expression>, <array expression> ] },它会显示另一个错误,即MongoError: FieldPath field names may not start with '$'.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-17 21:43:11

问题是你用大括号把or括起来了。

find的语法为db.coll.find(findCondition}, {projection})

如果要执行查询,可以向其传递id andor query。

代码语言:javascript
复制
VideoSchema.find(
        { $and: [
          {_id: { $ne: id }}, 
          {$or: [
            { influencerId: update.influencerId },
            { category: update.category },
            { keywords: { $in: [...update.keywords] } },
            { genre: { $in: [...update.genre] } },
          ] }
        ]} 
      );

否则,将其添加到find条件的部分中。它是OR条件。

代码语言:javascript
复制
VideoSchema.find(
        { _id: { $ne: id }, 
          $or: [
            { influencerId: update.influencerId },
            { category: update.category },
            { keywords: { $in: [...update.keywords] } },
            { genre: { $in: [...update.genre] } },
          ]
        }
      );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63450892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档