mongoose查询具有不同值的相同字段

Joh*_*now 8 mongoose mongodb node.js express

有没有办法让用户mongoose.find({title:'some title'})使用多个值查询同一个字段?例如,像这样的东西 mongoose.find({title:'some title', title:'some other title'})只返回匹配的文件title:'some other title是否有办法实现这一目标?

Jyo*_*ngh 26

你应该使用MongoDB $in操作符 -

mongoose.find({title: {$in: ['some title', 'some other title']}})
Run Code Online (Sandbox Code Playgroud)

您向$in运算符提供了一个数组,它将返回所有在指定数组中具有精确标题的文档.


ter*_*rme 8

2021 年发现这个,也有同样的问题。看来 $in 运算符不再需要了。只要你向 find() 传递一个项目数组,它就会搜索所有项目。

\n

前任:

\n
Furniture.find({\n  room: [ 'first_id', 'second_id' ]\n})\n
Run Code Online (Sandbox Code Playgroud)\n

这将返回 room 是第一个或第二个 id 的文档。

\n

可以写成查询字符串,例如:

\n
?room=first_id&room=second_id\n
Run Code Online (Sandbox Code Playgroud)\n

不需要解析\xe2\x80\x94Node会自动将其解析为数组。

\n


use*_*572 0

mongodb 文本搜索 {"title":"some thing"} 将返回任何包含单词“some”或单词“thing”的文档。我不会对“某事”一词进行精确匹配。

因此,如果您想查找包含任何一系列单词的所有标题,您只需执行 {"title":"word one 二三四东西狗猫最后一个单词"} ,它将返回包含任何这些单词的任何文档在里面。

如果您想进行精确的短语匹配,那么您必须更改原始查询。

  • 我同意,但在你的回答中没有提到**文本搜索**。OP 正在谈论查找搜索,您的答案似乎具有误导性。 (2认同)