【发布时间】:2014-02-15 16:14:44
【问题描述】:
我有一个对象数组,我想在 MongoDB 集合中查询具有与我的对象数组中的任何对象匹配的元素的文档。
例如:
var objects = ["52d58496e0dca1c710d9bfdd", "52d58da5e0dca1c710d9bfde", "52d91cd69188818e3964917b"];
db.scook.recipes.find({products: { $in: objects }}
但是,我想知道是否可以按 MongoDB 中的匹配数对结果进行排序。
例如,顶部将是恰好匹配三个元素的“食谱”:["52d58496e0dca1c710d9bfdd", "52d58da5e0dca1c710d9bfde", "52d91cd69188818e3964917b"]。
第二个选择有两个配方:即["52d58496e0dca1c710d9bfdd", "52d58da5e0dca1c710d9bfde"],第三个只有一个:即["52d58496e0dca1c710d9bfdd"]
如果你能得到它拥有的物品数量,那就太好了。
【问题讨论】:
-
我认为您在这里有三个选择:MongoDB 聚合框架、MongoDB Map-Reduce 和操作服务器中的数据。如果我有时间,我会尝试用一个例子来回答。
标签: arrays mongodb sorting mongoose