草庐IT

6、Arrays类

全部标签

arrays - 仅返回文本搜索匹配的数组元素

假设我创建了以下数据库/集合:usearticlesdb.stores.insert([{_id:1,arr:['abcxyz','def']},{_id:2,arr:['jadskf','ljhabc']}])db.stores.createIndex({"arr":"text"})我想对数组arr进行文本搜索,并只获取与搜索匹配的数组元素。例如,>db.stores.find({$text:{$search:"abc"}}){"_id":1,"arr":["abcxyz","def"]}{"_id":2,"arr":["jadskf","ljhabc"]}理想情况下,我只想获取第一

arrays - 在mongodb中删除数组中的数组

在我的mongo集合中,我有一个名为“institution.type”的嵌套变量。这是一个包含以下元素的数组:db.collection.distinct("institution.type")[null,["boarding"],"virtual"]我试图删除带有“登机”元素的条目,但是由于登机本身在一个数组中这一事实而卡住了(最初在对数组使用“$push”时犯了一个错误)我尝试了以下方法来查找文档:db.collection.find({"institution.type":{$in:["boarding"]}}).count()0和db.collection.update({"

arrays - 如何使用 MongoDB 从嵌套在另一个数组中的数组中删除元素

问题假设我有一个文档如下:doc={"_id":ObjectId("56464c726879571b1dcbac79"),"food":{"fruit":["apple","orange"]},"items":[{"item_id":750,"locations":[{"store#":13,"num_employees":138},{"store#":49,"num_employees":343}]},{"item_id":650,"locations":[{"store#":12,"num_employees":22},{"store#":15,"num_employees":52

arrays - MongoDB - 对数组参数元素进行操作查询

我是MongoDB的新手,我想弄清楚我是否可以使用MongoDB方便地执行此查询并获得良好的性能。我想将数字和数组参数传递给查询,并使用它们对集合中每个文档中的数组值逐个元素地执行操作。这可能吗?例如集合包含如下文档:{"name":"item1","m":5.2,"v":1.1,"data1":[0,0,0.3,0.7,0.95,0.9,0.75,0.4,0.1,0],"data2":[0,-1,0,1,1,0]}我还有另一个“搜索”文档,可能看起来像这样:{"x":8,"K":1,"dataA":[0,0,0,0,0,0,0,0.5,1,0.5],"dataB":[0,-2,0,1

arrays - MongoDB 如何在给定数组中插入带有_id 的对象

我的命令是这样的:db.item.remove()db.item.update({_id:{$in:['A1','A2']}},{$inc:{count:1}},{multi:true,upsert:true})我想要的结果应该是db.item.find()-->{_id:'A1',count:1}{_id:'A2',count:1}但实际上是:{_id:ObjectId(xxx),count:1}{_id:ObjectId(xxx),count:1}似乎Upsert不能自动使用查询数组中的val作为新文档的_id,有没有办法达到我的目的? 最佳答案

arrays - 如何在子文档的每个字段中搜索

这是我的文档:{"_id":ObjectId("5259b73b4949e0b22608960d"),"array":["a","b"]}要在array字段中查找一些值,我使用以下查询:db.collection.find({roles:'a'})但是当array字段看起来像这样时,我遇到了问题:{"array":{'0':'a','1':'b'}}如何使用这种数组(实际上是所有字段都是数组索引的子文档)执行与以前相同的查询?所以我需要找到一个文档,其中任何子文档的字段都等于某物。很遗憾,我无法更改此字段,因为它是由第3端API生成的。 最佳答案

arrays - 使用多个条件更新 mongodb 中嵌套数组中的对象

mongo中的示例文档如下所示,但我的集合有几千个文档,其中一些具有以下所有测试,而一些仅具有以下测试的子集:{"_id":ObjectId("52435f0f6f73205f7d37a2b0"),"ID":{"schoolID":"1234"},"institution":{"tests":[{"test":"SATMath","25th_percentile":null,"mean":404,"50th_percentile":null,"75th_percentile":null},{"test":"SATVerbal","25th_percentile":null,"mean"

arrays - mongoDB中的有序固定长度数组

我是monogDB的新手,我正在尝试设计我存储数据的方式,以便我可以执行我想要的查询类型。假设我有一份文件看起来像{"foo":["foo1","foo2","foo3"],"bar":"baz"}其中数组“foo”的长度始终为3,并且项目的顺序是有意义的。我希望能够进行查询以搜索“foo2”==something的所有文档。本质上,我想像对待任何旧数组一样对待“foo”,并能够在搜索中为它编制索引,所以类似于“foo”[1]==something。monogDB支持这个吗?像这样存储我的数据会更正确吗?{"foo":{"foo1":"val1","foo2":"val2","foo3

arrays - MongoDB $addToSet 与 $push(速度)

我在MongoDB的数据库中有1.5亿个文档的集合,我想为每个文档(关键字)添加一个数组字段{Subject:"value1",Object:"value2","keywords":[A,A,B,C,D]}所以我要添加元素的字段是“关键字”。我应该执行addToSet(A)还是push(A)?我不关心重复项。所以上面的例子是正确的。但我只关心速度。哪个更快(时间明智)$addToSet或$push?? 最佳答案 push()应该更快,因为它不需要像addToSet()那样检查重复项。在howtoprofile上也有描述如果您想在现实

arrays - MongoDB 更新数组元素

我有这样的文档结构{"_id":ObjectId("52263922f5ebf05115bf550e"),"Fields":[{"Field":"LotNo","Rules":[]},{"Field":"RMANo","Rules":[]}]}我尝试通过使用以下代码插入将保存对象的规则数组来进行更新。db.test.update({"Fields.Field":{$in:["LotNo"]}},{$addToSet:{"Fields.Field.$.Rules":{"item_name":"my_item_two","price":1}}},false,true);但是我得到以下错误: