【发布时间】:2014-08-04 09:03:52
【问题描述】:
我正在尝试使用 mongoose 通过传递标签数组来使用 .where() 过滤一些结果。它可以有效地查找与数组项之一匹配的文档,但我需要更精确的东西。
var tags = ["cow","bus"];
var query = Contact.find({name: query.name}).where('tags').in(tags).exec(callback);
这会返回在其标签数组中包含牛或公共汽车的联系人。
我要做的是缩小范围,找到一个同时具有“cow”和“bus”但不完全匹配的联系人。
例如
Filter Tags: "cow","bus"
contact1
tags: ["cow","bus","chicken"]
contact2
tags: ["cow","bus","pokemon"]
contact3:
tags: ["bus"]
contact4:
tags: ["cow","plane","pie"]
contact5:
tags: ["cow","bus"]
我希望查询返回联系人 1、2 和 5。
我发现如果我这样做了,
var query = Contact.find({name: query.name})
.where('tags').in(["cow"])
.where('tags').in(["bus"]);
它可以工作,但它看起来很老套/草率,而且是硬编码的。我猜它是一个动态的 $ 并使用传递的数组。
任何指针?
【问题讨论】: