File: mongocollection-aggregate-out.phpt

package info (click to toggle)
php-mongo 1.5.7-1
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 11,040 kB
  • ctags: 2,802
  • sloc: ansic: 17,632; xml: 2,195; php: 1,630; pascal: 330; makefile: 52; sh: 39
file content (116 lines) | stat: -rw-r--r-- 2,256 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
--TEST--
MongoCollection::aggregate() $out operator and read preferences
--INI--
error_reporting=-1
--SKIPIF--
<?php $needs = "2.5.3" ?>
<?php require_once "tests/utils/replicaset.inc" ?>
--FILE--
<?php
require_once "tests/utils/server.inc";

$rs = MongoShellServer::getReplicasetInfo();

$mc = new MongoClient($rs["dsn"], array(
    "replicaSet" => $rs["rsname"],
    "readPreference" => MongoClient::RP_SECONDARY,
));

$c = $mc->selectCollection(dbname(), "aggout");
$cout = $mc->selectCollection(dbname(), "aggoutput");
$c->drop();
$cout->drop();

$data = array (
    "title" => "this is my title",
    "author" => "bob",
    "posted" => new MongoDate,
    "pageViews" => 5,
    "tags" => 
    array (
      0 => "fun",
      1 => "good",
      2 => "fun",
    ),
    "comments" => 
    array (
      0 => 
      array (
        "author" => "joe",
        "text" => "this is cool",
      ),
      1 => 
      array (
        "author" => "sam",
        "text" => "this is bad",
      ),
    ),
    "other" => 
    array (
      "foo" => 5,
    ),
);
$d = $c->insert($data, array("w" => true));

$ops = array(
    array(
        '$project' => array(
            "author" => 1,
            "tags"   => 1,
        )
    ),
    array('$unwind' => '$tags'),
    array(
        '$group' => array(
            "_id" => array("tags" => '$tags'),
            "authors" => array('$addToSet' => '$author'),
        )
    ),
    array('$out' => "aggoutput"),
);


$alone = $c->aggregate($ops);
var_dump($alone);
reset($ops);
$multiple = $c->aggregate(current($ops), next($ops), next($ops), next($ops));
var_dump($multiple);
$cout->setReadPreference(MongoClient::RP_PRIMARY);
var_dump($cout->findOne());
$c->drop();
$cout->drop();

?>
===DONE===
<?php exit(0); ?>
--EXPECTF--
Warning: MongoCollection::aggregate(): Forcing aggregate with $out to run on primary in %s on line %d
array(2) {
  ["result"]=>
  array(0) {
  }
  ["ok"]=>
  float(1)
}

Warning: MongoCollection::aggregate(): Forcing aggregate with $out to run on primary in %s on line %d
array(2) {
  ["result"]=>
  array(0) {
  }
  ["ok"]=>
  float(1)
}
array(2) {
  ["_id"]=>
  array(1) {
    ["tags"]=>
    string(4) "good"
  }
  ["authors"]=>
  array(1) {
    [0]=>
    string(3) "bob"
  }
}
===DONE===