Sails.js 和 Waterline:查找搜索词在数组或嵌套对象中的位置
Sails.js and Waterline: Finding Where Search Term is in the Array or Nested Object
我正在尝试使用来自 Sails.js 的 Waterline 编写一个复杂的查找查询。这是我正在查找的对象的简化示例:
基本上,我想编写一个查询,其中提供的搜索字符串可以等于 id
、在 myArray
属性中,或者是 myNestedObject.nestedAttribute
的值。
我知道我可以这样做:
MyModel.find().where({ or: [] });
在 .where()
中作为 or
提供的数组是应该添加匹配项的地方,如下所示:
{ id: { 'contains': searchTerm } }
如何使用 Waterline 进行查询,我可以在其中提供搜索词 (searchTerm
) 以查看该值是否在 myArray
对象中?以及如何检查嵌套属性?我正在使用 sails-mongo 适配器,但我不想编写任何 Mongo 特定查询,这样我就可以在将来享受使用 ORM 的所有好处(比如如果我们离开Mongo 之类的)。
无法使用标准水线查询语法在嵌入内搜索,但您可以尝试:
- 以不同的方式构建数据。
- 使用 mongo native query.
- 使用 .stream() 并一条一条地检查每条记录,如果这个查询不是
延迟敏感(例如计划作业或迁移脚本)。
我正在尝试使用来自 Sails.js 的 Waterline 编写一个复杂的查找查询。这是我正在查找的对象的简化示例:
基本上,我想编写一个查询,其中提供的搜索字符串可以等于 id
、在 myArray
属性中,或者是 myNestedObject.nestedAttribute
的值。
我知道我可以这样做:
MyModel.find().where({ or: [] });
在 .where()
中作为 or
提供的数组是应该添加匹配项的地方,如下所示:
{ id: { 'contains': searchTerm } }
如何使用 Waterline 进行查询,我可以在其中提供搜索词 (searchTerm
) 以查看该值是否在 myArray
对象中?以及如何检查嵌套属性?我正在使用 sails-mongo 适配器,但我不想编写任何 Mongo 特定查询,这样我就可以在将来享受使用 ORM 的所有好处(比如如果我们离开Mongo 之类的)。
无法使用标准水线查询语法在嵌入内搜索,但您可以尝试:
- 以不同的方式构建数据。
- 使用 mongo native query.
- 使用 .stream() 并一条一条地检查每条记录,如果这个查询不是 延迟敏感(例如计划作业或迁移脚本)。