如何通过 RavenDB 使用“AND”运算符执行搜索?
根据文档,我需要添加运算符枚举 ("AND"\"OR") 作为搜索函数的第三个参数。 https://ravendb.net/docs/article-page/4.0/nodejs/client-api/session/querying/how-to-use-search
出于某种原因,AND 运算符不起作用,它默认为我提供 OR 结果。
例子:
用户集合:
users/1-A: {
firstName: 'Joe',
lastName: 'Allen'
}
users/2-A: {
firstName: 'Joe',
lastName: 'Biden'
}
乌鸦的召唤:
session.query({ collection: 'Users' })
.search('firstName', 'Joe', 'AND') // search with AND operator
.search('lastName', 'Biden')
.all()
上面的调用返回两个文档。 合适的语法应该是什么?
谢谢
最佳答案
所以我找到了 node.js 的解决方案。
“AND”
枚举作为第三个参数对我不起作用(根据此页面:https://ravendb.net/docs/article-page/4.0/nodejs/client-api/session/querying/how-to-use-search)。
我找到了另一个页面: https://ravendb.net/docs/article-page/4.0/nodejs/indexes/querying/searching
它在查询中使用 andAlso()
函数来使用 "AND"
运算符并且它有效。
例子:
const joeBiden = session.query({ collection: 'Users' })
.search('firstName', 'Joe')
.andAlso()
.search('lastName', 'Biden')
.all()
这将只返回 Joe Biden 的文档。
请注意,它返回一个 promise 。
** 如果您调用 andAlso
函数并且在它之后没有查询,Raven 将引发错误,因此如果您循环遍历可能的搜索词,请记住排除 andAlso
函数在上次搜索中。
const joeBiden = session.query({ collection: 'Users' })
.search('firstName', 'Joe')
.andAlso()
.search('lastName', 'Biden')
.andAlso() // this line will cause Raven to throw an error
.all()
关于javascript - RavenDB 无法在 nodejs 上使用 AND 运算符执行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71219196/