假设我有以下文件
{
_id: ObjectId("5234cc89687ea597eabee675"),
code: "xyz",
tags: [ "school", "book", "bag", "headphone", "appliance" ],
qty: [
{ size: "S", num: 10, color: "blue" },
{ size: "M", num: 45, color: "blue" },
{ size: "L", num: 100, color: "green" }
]
}
{
_id: ObjectId("5234cc8a687ea597eabee676"),
code: "abc",
tags: [ "appliance", "school", "book" ],
qty: [
{ size: "6", num: 100, color: "green" },
{ size: "6", num: 50, color: "blue" },
{ size: "8", num: 100, color: "brown" }
]
}
{
_id: ObjectId("5234ccb7687ea597eabee677"),
code: "efg",
tags: [ "school", "book" ],
qty: [
{ size: "S", num: 10, color: "blue" },
{ size: "M", num: 100, color: "blue" },
{ size: "L", num: 100, color: "green" }
]
}
我想将文档中具有代码“ efg”的所有元素的数量更改为0。我该怎么做?我应该对位置运算符使用循环吗?
最好的方法是匹配数组元素,并
$
使用 Bulk()
API
使用位置运算符分别进行更新。您真的不应该吹牛qty
。
var bulk = db.mycollection.initializeOrderedBulkOp(),
count = 0;
db.mycollection.find({ "code" : "efg" }).forEach(function(doc){
var qty = doc["qty"];
for (var idx = 0; idx < qty.length; idx++){
bulk.find({
"_id": doc._id,
"qty": { "$elemMatch": { "num": qty[idx]["num"]}}
}).update({ "$set": { "qty.$.num": 0 }})
}
count++;
if (count % 200 == 0) {
// Execute per 200 operations and re-init.
bulk.execute();
bulk = db.mycollection.initializeOrderedBulkOp();
}
})
// Clean up queues
if (count % 200 != 0)
bulk.execute();
我有一个以下格式的mongodb文档。如何基于父属性_id更新数组中第一个元素的rolename字段。
传入:{ text: "子目录一", id: 880 } 期望输出: 传入:{ text: "根目录", id: 9521 } 期望输出:
问题内容: 我的Python迷宫生成程序似乎有问题。我正在尝试随机创建一条在选择点处分支的路径,并随其进行存储点。当迷宫走到尽头时,它将测试最高值,而不是将其弹出并转到下一个,从而对访问的点进行排序,直到到达不是死角的位置。但是,当我尝试将项目追加到我用来保存我曾经去过的空间的列表时,发生了一些奇怪的事情,实际上我从未见过。这是代码,查看该代码的最佳方法是将其运行一段时间,直到完全运行为止。我还没
我对mongodb中的聚合概念相对陌生。在我的文档中,有一个数组。我尝试用$match,$unwind,$group来提取数组中有两个给定值的文档。我猜写上去没什么帮助..这是样品 文件: 从这些文档中,我需要提取一个具有“类:1”和“主题[”物理“,”英语“]的文档 所以,如果我正确地编写了查询(或聚合),我应该从上面提取第二个文档。 这是我所拥有的 好吧,上面的聚合没有给我任何反馈,所以我尝试
盘点前库存表 盘点表(含有些空白废数据) 希望得到:正确库存表
问题内容: 我是MongoDB的新手。我的样本文件是 我正在尝试更新其通知。我执行此操作的Java代码是: 它不会搜索其文件为。 问题答案: 在这种情况下,您有一个嵌套的文档。您的文档具有一个字段,该字段是一个数组,其中存储有多个子对象。要在子字段中进行搜索,您需要使用点语法: 但是,这将返回整个文档和整个数组。您可能只需要子文档。要对此进行过滤,您需要使用Collection.find的两个参数