MongoDB查找Lodash Find

时间:2013-12-01 04:56:52

标签: mongodb mongoose lodash database

我是否可以使用MongoDB查询执行类似的操作(我也使用MongooseJS)。

在lodash中,我可以this

var characters = [
  { 'name': 'barney',  'age': 36, 'blocked': false },
  { 'name': 'fred',    'age': 40, 'blocked': true },
  { 'name': 'pebbles', 'age': 1,  'blocked': false }
];

_.find(characters, function(chr) {
  // Do any kind of logic and ultimately return a boolean.
  return chr.age - 10 > 24;
}); // returns barney and fred

我可以使用内置的mongo驱动程序或mongoosejs执行此类操作吗?我宁愿不读取所有对象并像这样迭代它们,因为它们可能有很多。我更喜欢mongo为我做这件事。

谢谢!

2 个答案:

答案 0 :(得分:1)

虽然不建议出于性能原因(因为它必须遍历每个文档并执行JavaScript而不能使用索引),但您可以使用$where运算符(reference)来执行自定义JavaScript代码:

db.theCollection.find({ $where : "this.age - 10 > 24" })

(我猜测真正的逻辑会更复杂,因为可以在不使用$where的情况下处理该查询:find({age: { $gt : 24 }})。如果可能,尝试使用内置查询运算符通常更有效率,并且通常更容易利用现场指数。

答案 1 :(得分:-1)

Lo-Dash遍历元素并将每个元素传递给回调。看起来这并不容易。它需要创建一些非常复杂的东西,能够识别回调函数中的条件(解析它),然后尝试使用索引和过滤记录。

MongoDB没有这样的选择。