0

我是mongodb的新手。我认为 mongo shell 和 php mongo 驱动程序之间存在一些使用差异。

我可以在 mongo shell 中计算多个标准。例如:

db.coll.count( { _id:ObjectId('4fb27b9c876b88e53d000000'), 
                 'items.title':'example' } );

但我不能用 php mongo 驱动程序做同样的计算。我试过了,但它返回 0。

$coll->count( array('_id'=>new MongoID('4fb27b9c876b88e53d000000'), 
                    'items.title'=>'example' ) );

但是,如果我使用 find() 然后 count(),我会得到相同的计数结果:

$coll->find( array('_id'=>new MongoID('4fb27b9c876b88e53d000000'), 
                   'items.title'=>'example' ) ).count();

我得到了我想要的,但我认为链接方式可能效率低下。我错了吗?

你怎么能用多个标准来计算?

4

2 回答 2

3

一个代码示例值一千字。看:

% mongo
MongoDB shell version: 2.1.1
connecting to: test
> db.foo.count
function (x) {
    return this.find(x).count();
}

这是否回答你的问题?:)

于 2012-05-17T05:55:45.473 回答
0

您必须首先使用 find() 而不是 count()

db.foo.count() -- will return 0, because db.foo it is only accessing the collection

db.foo.find($where).count() --- will return the number of documents in the collection

这是如何做到的。

于 2012-05-21T14:48:17.697 回答