使用或搜索中的MongoDB map reduce功能不会产生任何结果

使用或搜索中的MongoDB map reduce功能不会产生任何结果,mongodb,mapreduce,mongovue,Mongodb,Mapreduce,Mongovue,假设在数据库中,我有几个字段,对于某些记录,一些字段缺失。 例如: 对于下面的记录,我有一个定义如下的map reduce,因为opt1和opt2不在所有记录中,这个map reduce不会产生任何结果 但是如果我从map函数中去掉opt1和opt2,它会给出包含opt1和opt2的所有结果。有人能帮我解决这个问题吗?我需要找到opt1或opt2大于零的所有记录 function Map() { emit( this.id, { "name" : this.name, "opt1": this

假设在数据库中,我有几个字段,对于某些记录,一些字段缺失。
例如:
对于下面的记录,我有一个定义如下的map reduce,因为opt1和opt2不在所有记录中,这个map reduce不会产生任何结果

但是如果我从map函数中去掉opt1和opt2,它会给出包含opt1和opt2的所有结果。有人能帮我解决这个问题吗?我需要找到opt1或opt2大于零的所有记录

function Map() { emit( 
this.id, { "name" : this.name, "opt1": this.opt1, "opt2": this.opt2} );}

function Reduce(key, values) {  return values[0]; }

Query : { $or : [ {'opt1': {'$gt': 0} }, {'opt2': {'$gt': 0}}] }

Inline : true

------rec 1 ----- { id : 1 opt1 : 34  opt2 : 46 name : one }

------rec 2------- {id : 2 opt1 : 32 name : two }

----- rec 3 ------ {id : 3 name : three }

{---- rec 4 ----- id : 4 opt2 : 22 name: four }

--------------------------------

不清楚。一步一步粘贴代码将有助于解决问题。另外,为什么要使用map/reduce而不是常规查询?我试图给出一个示例。实际上,我在reduce函数中做的事情远远不止返回值[0]。