草庐IT

mongodb.driver

全部标签

mongodb - 如何从另一个集合中有条件地从 MongoDB 中删除?

我的MongoDB上有两个集合。让我们说:账户、用户我想删除10个月前最后一次更新的所有用户,该帐户不再处于事件状态。在我的用户集合中,我有一个与帐户相关的accountId属性。是否可以创建一个查询来删除符合要求的用户?或者这种情况的最佳方法是什么? 最佳答案 看看$lookup函数。您可以使用它来“加入”表格。然后您可以遍历光标并删除文档(对于大型集合不会执行得很好)varcursor=db.grades.aggregate(pipeline);cursor.forEach(function(doc){db.grades.rem

mongodb - 在 Spring JUnit @WebMvcTest 中使用嵌入式 MongoDB

我目前在我的Spring应用程序中使用MongoDB。由于我添加了Mongo,我的端点测试由于以下错误而不再工作:Noqualifyingbeanoftype'xxx'available:expectedatleast1beanwhichqualifiesasautowirecandidate.Dependencyannotations:{}我在Controller中Autowiring的存储库如下:privatefinalRuleRepositoryruleRepository;@AutowiredpublicTestController(RuleRepositoryruleRepo

java - 方法 include 在 mongodb java 中未定义

我正在使用MongoDBshell版本3.6.3并尝试执行以下类型的查询(来自JAVA):SELECT_id,ressort,datefromsampleWHEREressort!="A".我的一段代码是:MongoClientmongo=newMongoClient("localhost",27017);MongoDatabasedatabase=mongo.getDatabase("local");MongoCollectioncollection=database.getCollection("sample");FindIterablefindIterable=collectio

mongodb - 如何高效地对 MongoDB 未索引字段进行复杂查询?

我正在为Web应用程序构建过滤功能,它应该类似于TFS过滤查询的JIRA。因此用户应该能够过滤字段内容并在过滤查询中使用逻辑运算符。数据保存在MongoDB中,主要的挑战是我们过滤的字段不仅要支持严格相等,而且全文搜索很难索引,因为它们可能因每个用户而异。简而言之,有一个嵌套对象,它有另外三个嵌套对象,根据用户可以有不同数量的字段,字段名称也是由用户设置的,所以我们不知道。例如集合中的文档结构可以是:{_id:ObjectId()storage:{obj_1:{}obj_2:{}}},{_id:ObjectId()storage:{obj_1:{field_1:val,field_2:

node.js - 如何监视 MongoDB 更改流中特定字段的更改

我正在使用mongodb的Node驱动程序在具有大量持续更新字段的文档上启动更改流(通过插入/更新端的一些逻辑调用$setwithonly更改的字段),但我只想查看特定字段的更改。我目前对此的尝试如下,但即使该字段不是更新的一部分,我也会得到每个更新。我认为“updateDescription.updatedFields”是我所追求的,但我目前拥有的代码只提供了所有更新。正确的$match过滤器应该是什么样子才能实现这样的目标?我想也许检查它是否是$gte:1可能是让它工作的黑客攻击,但我仍然只是获取每个更新。我试过$inc来查看字段名称是否也在“updatedFields”中,但这似

MongoDB 分片键

我们有一个大型MongoDB集合,我们希望开始分片。该集合有3.4B条记录,大小约为14.6TB(磁盘上压缩了5.3TB)。该集合通常每小时写入约5M,但我们预计这一数字将逐年增长。该集合的索引大小约为220GB。所有记录都有一个feedId,所有查询都将针对属于特定feedId的记录。目前大约有200个独特的feedId值,但每个值的分布是高度非线性的。在低端,一些feedId每天可能只能看到几十条记录。另一方面,前5个feedId约占数据集的75%。记录也有一个时间戳,查询将始终针对给定的日期范围。timestamp字段或多或少是单调的。feedId和timestamp上已经存在复

node.js - MongoDB 类型错误 : Cannot read property 'result' of undefined

我想向集合中插入数据,在插入之前我需要检查它是否存在collection.find({sno:req.body.sno}).toArray((err,result)=>{if(result.length>0){flag=false;callback(flag);}else{console.log(result.length);collection.insertOne({sno:req.body.sno,password:req.body.password},(err,insertResult)=>{if(insertResult.result.ok===1){flag=true;}ca

mongodb - 查询将数组转换为具有 n 个属性的文档映射

我正在将数组转换为mongo中的map。"items":[{"id":"AB-02","qty":2},{"id":"AB-03","qty":0},{"id":"AB-03","qty":9}]成为"items":{"AB-02":{"id":"AB-02","qty":2},"AB-03":{"id":"AB-03","qty":0},"AB-04":{"id":"AB-03","qty":9}}在数组版本中,根据items中有多少元素来查询非常容易,但是如何使用后一种格式的items来查询呢?例如,要查询那些items有7个元素的文档? 最佳答案

如果一个字段不存在,Mongodb 添加多个文档

我有一些文档想添加到我的收藏中。我想在一个Action中添加数组中的所有对象,当我有一个存在的东西时,我想替换它。{"a":0,"b":0,"myKey":"aaaaaa"}{"a":0,"b":0,"myKey":"hhhhhh"}{"a":0,"b":0,"myKey":"oooooo"}{"a":0,"b":0,"myKey":"mmmmmm"}{"a":0,"b":0,"myKey":"eeeeee"}当myKey是对象的唯一键时,我的集合看起来像这样:这些是我想添加到我的收藏中的文档:[{"a":1,"b":2,"myKey":"aaaaaa"},{"a":2,"b":3,"

java - 从 MongoDB Java 中的数组中删除文档

我得到一个看起来像这样的JSON字符串:Stringtmp="[{"ID":"12","Date":"2018-02-02","ObjData":[{"Name":"AAA","Order":"12345","Extra1":{"Temp":"3"},"Extra2":{"Temp":"5"}},{"Name":"BBB","Order":"54321","Extra1":{"Temp":"3"},"Extra2":{"Temp":"5"}}]}]"例如,我想从“ObjData”中删除“Order”等于“54321”的文档。我得到以下代码:Documentdoc=newDocument