MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Mapa PHP MongoDB redukuje błędy asercji db

Podczas korzystania z mapReduce() ważne jest, aby pamiętać, że wartość zwracana przez funkcję reduction() musi mieć taki sam kształt, jak ten, którego oczekuje się w elemencie „values” funkcji reduction() — i to, z kolei musi mieć taki sam kształt, jak ten, który jest emitowany przez funkcję emit().

Otrzymano kolekcję zawierającą dokumenty o następującej formie:

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

Poniższy kod wygeneruje żądany wynik:

<?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. $lookup, gdy outsideField jest tablicą

  2. TypeError:object nie jest funkcją w użyciu MongoDB z Node.js

  3. Jak wstawiać obrazy w mongoDB za pomocą javy?

  4. Zagnieżdżona tablica agregatów Mongo

  5. PyMongo max_time_ms