视频最后的那个例子中current,other,this都分别指什么

qq_5inx8blm MongoDB 数据查询(一) 最后由 ZhangzheBJUT 于2016年01月24日回复

  • 1 回答
  • 1.3k 浏览

见标题

  • ZhangzheBJUT 2016年01月24日 回答 #1楼
  • 视频中的query脚本:

    var cursor = db.query_where.find(
    
                            {
    
                                $where:function() 
    
                                {
    
                                   for (var current in this) 
    
                                   {
    
                                      for (var other in this)
    
                                      {
    
                                           if (current != other && this[current] == this[other])
    
                                               return true;
    
                                      }
    
                                   }
    
                                }
    
                            });
    
    
    

    下面是执行这段脚本返回的结果:

    [
    	{
    		"_id" : ObjectId("56a46ae98cc81269f1eaf21d"),
    		"apple" : 3,
    		"banana" : 3,
    		"peach" : 4
    	}
    ]
    

          首先解释一下这段脚本的作用,它是用来查找存在相同字段值的文档,也就是说一个文档中如果有两个字段的值相等的话,则满足查询条件。从返回的结果也可以看到,里面的apple和banana字段的值都为3,它们满足查询条件。

          在进行查询时,集合中的每条文档都会被 "query" 筛选,脚本中 this 指当前正在被处理的文档,它是用来引用当前文档的。current 和 other 是用来遍历文档中的字段的,通过两层for循环可以检查当前this引用文档的所有属性。

     if判断表示

    current != other && this[current] == this[other])

    如果不是同一个字段,而且字段值相等的话,就返回true。

  • 0 评论