我使用ObjCMongoDB库来支持一个简单的iPad应用程序。我理解基本的CRUD操作以及使用-[MongoConnection runCommandWithDictionary:onDatabaseName:error:]
来执行findAndModify
等数据库命令。
关于聚合框架或一般只是聚合,看起来我可以通过以下方式执行简单的数据库命令,如count
:
NSDictionary *commandDict = @{@"count": @"myCollection"}:
[myMongoConnection runCommandWithDictionary:commandDict onDatabaseName:@"myDB" error:&err];
是否可以执行更复杂的命令/查询,例如examples here?我尝试了以下无济于事。
NSDictionary *commandDict = @{@"aggregate":@"myCollection", @"query": @{@"group":@"myDocType"}};
如果这是一个不知情的问题,我仍然在学习Obj-C以及MongoDB。
答案 0 :(得分:0)
您对aggregate命令的语法似乎不正确。
请参阅the docs for aggregate中的此示例:
db.runCommand(
{ aggregate : "article", pipeline : [
{ $project : {
author : 1,
tags : 1,
} },
{ $unwind : "$tags" },
{ $group : {
_id : "$tags",
authors : { $addToSet : "$author" }
} }
] }
);
如果从命令行运行Mongo shell,可以直接在那里测试命令,然后再将其写入Objective-C。