使用 Map Reduce 概念抓取随机值的 MongoDB 查询。


对于使用 Map Reduce 的随机值,请结合 Math.random() 使用 mapReduce() 概念。让我们创建一个包含文档的集合 −

> db.demo651.insertOne({Value:10});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e9f0330e3c3cd0dcff36a57")
}
> db.demo651.insertOne({Value:20});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e9f0332e3c3cd0dcff36a58")
}
> db.demo651.insertOne({Value:30});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e9f0335e3c3cd0dcff36a59")
}
> db.demo651.insertOne({Value:40});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e9f0337e3c3cd0dcff36a5a")
}
> db.demo651.insertOne({Value:50});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e9f0339e3c3cd0dcff36a5b")
}
> db.demo651.insertOne({Value:60});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e9f033be3c3cd0dcff36a5c")
}
> db.demo651.insertOne({Value:70});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e9f033ee3c3cd0dcff36a5d")
}
> db.demo651.insertOne({Value:80});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e9f0340e3c3cd0dcff36a5e")
}

在集合中显示所有文档,借助 find() 方法 −

> db.demo651.find();

这将生成以下输出 −

{ "_id" : ObjectId("5e9f0330e3c3cd0dcff36a57"), "Value" : 10 }
{ "_id" : ObjectId("5e9f0332e3c3cd0dcff36a58"), "Value" : 20 }
{ "_id" : ObjectId("5e9f0335e3c3cd0dcff36a59"), "Value" : 30 }
{ "_id" : ObjectId("5e9f0337e3c3cd0dcff36a5a"), "Value" : 40 }
{ "_id" : ObjectId("5e9f0339e3c3cd0dcff36a5b"), "Value" : 50 }
{ "_id" : ObjectId("5e9f033be3c3cd0dcff36a5c"), "Value" : 60 }
{ "_id" : ObjectId("5e9f033ee3c3cd0dcff36a5d"), "Value" : 70 }
{ "_id" : ObjectId("5e9f0340e3c3cd0dcff36a5e"), "Value" : 80 }

以下是对查询抓取数据的查询 −

> map = function() {
...
...    if (Math.random() < 0.1) {
...       emit(this._id, this);
...    }
... }
function () {
   if (Math.random() < 0.1) {
      emit(this._id, this);
   }
}
>
> reduce = function(key, values) {
... return values;
... }
function (key, values) {
   return values;
}
>
> db.demo651.mapReduce( map, reduce, { out: 'demo_651' } );
{
   "result" : "demo_651",
   "timeMillis" : 1104,
   "counts" : {
      "input" : 8,
      "emit" : 1,
      "reduce" : 0,
      "output" : 1
   },
   "ok" : 1
}
> db.demo_651.find();

这将生成以下输出 −

{ "_id" : ObjectId("5e9f033be3c3cd0dcff36a5c"), "value" : { "_id" : ObjectId("5e9f033be3c3cd0dcff36a5c"), "Value" : 60 } }

更新时间: 2020 年 5 月 12 日

243 次浏览

启动您的 职业生涯

完成课程以获得认证

开始
广告