我想在Meteor.js中为动态查找文档创建一个函数。
例如,我有Students
收藏,我想通过name, gender, phone...
找到学生。如果提供了名称,我想找到名称like
提供的名称,如果提供gender
,我想查找提供的性别等同于提供phone
的性别我想找到提供的手机之类的手机,如果没有提供name
或gender
或phone
,我想查找所有姓名和所有性别以及所有手机。
在SQL Server中,我将创建存储过程,如下所示:
Create PROCEDURE [dbo].[pG_Student]
@pName nvarchar(250)=null,
@pGender nvarchar(50)=null,
@pPhone nvarchar(100)=null
AS
BEGIN
SELECT * FROM [dbo].[StudentView]
WHERE (LOWER(Name) like '%'+LOWER(@pName)+'%' or @pName is null)
and (Gender=@pGender or @pGender is null)
and (LOWER([Phone]) like '%'+LOWER(@pPhone)+'%' or @pPhone is null)
END
使用此存储过程,我可以使用C#调用。
Meteor.js怎么样?
答案 0 :(得分:0)
您只需构建标准即可。 e.g:
var criteria = {};
if (typeof pName != 'undefined') criteria.pName = pName.toLowerCase();
if (typeof pGender != 'undefined') criteria.pGender = pGender;
if (typeof pPhone != 'undefined') criteria.pPhone = pPhone.toLowerCase();
var cursor = Students.find(criteria);
请注意,在上面的代码中我假设数据库中的数据已经是小写的。这允许最有效的搜索。如果没有,则必须使用正则表达式:
MongoDB: Is it possible to make a case-insensitive query?
但是,由于Mongo不能为我们提供索引,因此不建议这样做。如有必要,您可以创建小写的可搜索字段和混合大小写显示字段。
添