参见下面的例子(来自mongochef的json格式)。我需要为我们集合中名为isReadOnly(bool)的每个元素添加一个新字段。我该怎么做?我可以轻松地将它添加到文档的根目录,但是要在每个数组元素中进行争斗。
{
"_id" : "fda42f22-0fa4-4e4a-94bf-245b1124c8b9",
"_t" : "FullConfiguration",
"DeviceConfigName" : "Illinois",
"Elements" : [
{
"_t" : "NumberConfigurationElement",
"AsciiConfigNumber" : NumberInt(10),
"DataType" : NumberInt(1),
"ByteOffset" : NumberInt(0),
"Name" : "alcohol_limit",
"Description" : "The alcohol limit of the device (ug/l)",
"AckResponse" : "HT-CONFG,010,00119",
"DevicePart" : NumberInt(1),
"Value" : NumberInt(119),
"DefaultValue" : NumberInt(119),
"Min" : NumberInt(50),
"Max" : NumberInt(500)
}, .....
答案 0 :(得分:2)
你可以这样做(如果你的收藏被称为'coll'):
db.coll.find().forEach(function(e) {
var t = e.Elements;
t.forEach(function(e) {
e.isReadOnly=false
});
db.coll.update({ _id : e._id }, { $set: { Elements : t } } );
})
答案 1 :(得分:0)
private void Busy()
{
SetReceiveTimeout(TimeSpan.FromSeconds(1));
Receive<PauseJob>(msg =>
{
// Do something
});
Receive<ReceiveTimeout>(timeout =>
{
// I won't run until 1 second after
// all messages are processed or stashed
});
ReceiveAny(msg =>
{
Stash.Stash();
});
}
答案 2 :(得分:0)
@David我正在使用MongoDB 3.6+的解决方案。
db.collection.update({},
{ $set: { "Elements.$[].isReadOnly": false } }, { multi: true }
)
此命令将在文档的所有isReadOnly = false
数组字段中添加Element
字段。
$position
修饰符指定数组$push
插入元素的位置。如果没有$position
修饰符,则$push
运算符会将元素插入到数组的末尾。有关更多信息,请参见$push
修饰符。
您可以在position operator docs上找到更多详细信息