MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Bản đồ PHP MongoDB giảm lỗi xác nhận db

Điều quan trọng cần nhớ khi sử dụng mapReduce () rằng giá trị trả về của hàm Reduce () cần phải có cùng hình dạng với giá trị mà bạn mong đợi nhận được trong phần tử 'giá trị' của hàm Reduce () - và điều đó, ngược lại, cần phải có cùng hình dạng với những gì được phát ra bởi hàm release ().

Đưa ra một bộ sưu tập chứa các tài liệu có dạng sau:

> db.posts.count();
1000
> db.posts.findOne();
{
    "_id" : 0,
    "date_posted" : ISODate("2012-04-04T05:54:44.535Z"),
    "topic_id" : "sierra"
}

Đoạn mã sau sẽ tạo ra kết quả bạn muốn:

<?php

$conn = new Mongo("localhost:$port");
$db = $conn->test;
$collection = $db->tst;

$map = new MongoCode(
    "function() { emit( this.topic_id, { last_post: this.date_posted } ); }"
);

$reduce = new MongoCode(
  "function(key, values) { ".
      "var max = ISODate('1970-01-01T00:00:00Z'); ".

      "values.forEach(function(val) { ".
          "if ( max < val.last_post ) max = val.last_post; ".
      "}); ".

      "return {last_post : max}; " .
  "}"
);


$result = $db->command( array(
    "mapreduce" => "posts",
    "map" => $map,
    "reduce" => $reduce,
    "query" => array( "topic_id" => "alpha"), 
    "out" => array( "merge" => "lastPosts")
    )
);
echo "result: "; print_r($result);

$collection = $db->lastPosts;
$cursor = $collection->find()->limit(6);

date_default_timezone_set("UTC");
foreach( $cursor as $doc ) {
    $date = date( "r", $doc['value']['last_post']->sec );
    echo $doc['_id'] . " last visited at " . $date ."\n" ;
}

?>



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB C # foreach BsonElement

  2. gia tăng findOneAndUpdate thay vì cập nhật trong mongoose

  3. Làm cách nào để lấy tài liệu đã xóa trong MongoDB?

  4. Không thể khởi động MongoDB:Lỗi hệ thống 1067 trong Windows

  5. Lập chỉ mục khi nào, lập chỉ mục gì trong Mongoid?