草庐IT

doctrine-query

全部标签

MongoDB 聚合 : How to query a limited amount of "top" documents per group?

假设我有一个包含员工文档的MongoDB集合:{name:"JohnDoe",department:"Finance",salary:100}如何查询每个部门薪资最高的X名员工?编辑为了让自己更清楚一点,我是这样想的:db.collection.aggregate({$sort:{salary:-1}},{$group:{_id:"$department"employees:{$addToSet:"$name"}},{$project:{employees:{$slice:X}}})但这行不通有两个原因:1.$addToSet不保证输出集的任何顺序(至少根据documentation)

MongoDB 聚合框架 : group query

我希望使用mongoDB的聚合框架获得特定的查询。我想我需要$group和$addToSet运算符,但我对要使用的正确查询感到困惑。这是文章合集:/*0*/{"_id":4,"author":"KevinVanhove","book":{"order":500,"title":"HTML","url":"html"},"chapter":{"img":"navChapter-logo","order":500,"title":"W3C","url":"w3c"},"featured":0,"heading":[{"title":"title1","_id":ObjectId("5313

c# - 使用非通用 EQ-Query 从集合中删除文档

我正在尝试使用非通用EQ-Query从我的集合中删除文档,但它没有删除任何内容。使用通用的EQ-Query,文档被成功删除。这是我存储在MongoDB中的对象。publicclassUserDto{publicintId{get;set;}publicstringFirstName{get;set;}publicstringLastName{get;set;}publicstringUserName{get;set;}}这是我如何从集合中删除文档的示例代码。varcollection=database.GetCollection(typeof(UserDto).Name);varsin

mongodb - 从另一个文档的 preUpdate Hook 保存一个 Doctrine 文档的更新?

我有一个DocumentA的事件订阅者。DocumentA具有DocumentB类型的关联文档。在DocumentA的preUpdate生命周期事件Hook期间,我想刷新其DocumentB上的值。我有这样的代码:publicfunctionpreUpdate(LifecycleEventArgs$args){$document=$args->getDocument();if(!($documentinstanceofDocumentA)||return;}if($documentsB=$document->getDocumentB()){$dm=$args->getDocumentM

php - Symfony 2 Doctrine MongoDB 实体监听器

我试图让EntityListeners在Symfony2.7中与ODM一起工作,但无济于事。a51.document.listener.store:class:A51\FilesystemBundle\EventListener\StoreEntityListenertags:-{name:doctrine.odm.mongodb.document_manager,event:postLoad,method:onPostLoad}arguments:[@a51.repo.file]和:fileRepository=$fileRepository;}publicfunctiononPos

node.js - Mongoose :Query#exec 的目的是什么

Query#execMongoose的方法表示它执行查询并返回一个Promise对象。我不明白的是为什么这是必需的,因为已经有一个Query#then方法。具体例子:考虑一些简单的模型varFoo=mongoose.model("Foo",{name:String});有什么区别Foo.find().then(function(res){/*..*/},function(err){/*..*/});和Foo.find().exec().then(function(res){/*..*/},function(err){/*..*/});两者似乎都能正常工作。

php - 具有唯一键的 Doctrine ODM flush()

我使用doctrineODM来处理MongoDB。我有要保存的文件,这些文件可能会不时复制。我只需要每个事件的1个副本,所以我使用哈希uniq键来确保事件只有1个。所以我做了几个->persist($document);当我这样做时->flush();我遇到了一个异常:localhost:27017:E11000重复键错误索引:dbname.event.$eventKey_1dupkey:{:"keyValue"}而且所有数据都不会持久保存到MongoDB。所以问题是:是否有任何方法可以持久保存uniq数据并忽略现有数据而不做:try{->persist();->flush();}ca

php - doctrine odm 为日期字段返回 null

我将symfony与doctrinemongodbodm结合使用。持久化文档后,我在数据库中获得了正确的数据:{"_id":ObjectID("565572731ba05cb40e000029"),"date":ISODate("2015-10-31T23:00:00.000Z"),"from":10,"to":18,"type":"work","comment":"","createdOn":ISODate("2015-11-25T08:33:55.000Z")}但是当我尝试获取我的存储库中的数据时,它返回null作为日期字段的值。*edit:我删除了“createdOn”(也是一个

php - 学说 2 ODM : Querying ID field with MongoRegex with LIKE

我有一个更大的项目,在Symfony上下文中使用Doctrine2ODM。给定一个简单的ODM实体(XML定义):我想在_id字段上使用MongoRegex表达式查询App文档。现在,我知道“string与MongoId”问题-我们所有的ID都是正确的字符串。当我尝试通过MongoDBshell执行此操作时(使用Robomongo作为GUI);一切都很好,因为这个表达式成功返回了我正在搜索的对象:App.find({'_id':/^ad.*$/i})但是在PHP上下文中它是不同的。Doctrine2ODM中有一种特殊的逻辑,它对待标识符字段上的equals()搜索不同于普通的equal

php - 在 Doctrine2 上设置无限超时

对于Symfony2.3中使用的MongoDb,如何将超时设置为无限制?尝试在30秒超时后设置限制和查询,但“原始”查询在MongodbCLI上工作正常,需要大约90秒(或更多)才能完成。$qb=$this->createQueryBuilder('BaseLog')->hydrate(true)->field('template_id')->Equals($templateId);...return$qb->getQuery(array('timeout'=>-1))->execute(); 最佳答案 似乎是MongoDB游标对象