7
我正在使用MongoDB的項目,但我從來沒有使用它。 我明白,通過使用JavaScript,你可以操縱數據庫。我做了一個腳本,刪除某些領域,並增加了一些人,但它不能正常工作:MongoDB添加和刪除數組中的字段
db.floor.find({_id:"003"}).forEach(function(doc) { // Find floor with id = 003.
var tiles = doc.tiles; // Get tiles from floor.
for(var i = 0; i < tiles.length; i++){ // Loop through tiles.
var tile = tiles[i]; // Get tile at index i.
if (tile.nodeType){ // If tile has a field "nodeType",
tile.tileType = tile.nodeType; // add a field "tileType"
delete tile.nodeType; // and delete the "nodeType" field.
}
// THIS CODE BELOW IS NOT WORKING
var sensors = tile.sensors; // Get sensors of tile.
for(var j = 0; j < sensors.length; j++){ // Loop through sensors.
var sensor = sensors[j]; // Get sensor at index j.
if (sensor.state){ // If sensor has a field "state",
sensor.activated = sensor.state; // add a field "activated"
delete sensor.state; // and delete the "state" field.
}
}
}
db.floor.save(doc);
});
當db.floor.save(doc)
被調用時,我的地板被保存。所有瓷磚現在都有一個名爲tileType
的字段,但沒有傳感器具有名爲activated
的字段!所有傳感器仍然有state
。我不知道什麼是不工作,我使用相同的代碼爲瓷磚和傳感器。請幫忙。
這是地板的結構:
{
"_id" : "003",
"_class" : "nl.kamans.Floor",
"name" : "FloorDemo",
"tiles" : [
{
"_id" : "035",
"sensors" : [
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
}
],
"x" : 0,
"y" : 0,
"batteryVoltage" : 0,
"orientation" : "NORTH",
"nodeType" : "WIRELESS"
},
{
"_id" : "042",
"sensors" : [
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
}
],
"x" : 1,
"y" : 0,
"batteryVoltage" : 0,
"orientation" : "NORTH",
"nodeType" : "WIRELESS"
},
{
"_id" : "049",
"sensors" : [
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
}
],
"x" : 2,
"y" : 0,
"batteryVoltage" : 0,
"orientation" : "NORTH",
"nodeType" : "WIRELESS"
},
{
"_id" : "007",
"sensors" : [
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
}
],
"x" : 3,
"y" : 0,
"batteryVoltage" : 0,
"orientation" : "NORTH",
"nodeType" : "WIRELESS"
},
{
"_id" : "029",
"sensors" : [
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
}
],
"x" : 0,
"y" : 1,
"batteryVoltage" : 0,
"orientation" : "NORTH",
"nodeType" : "WIRELESS"
},
{
"_id" : "021",
"sensors" : [
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
}
],
"x" : 1,
"y" : 1,
"batteryVoltage" : 0,
"orientation" : "NORTH",
"nodeType" : "WIRELESS"
},
{
"_id" : "014",
"sensors" : [
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
},
{
"state" : false,
"ignored" : false
}
],
"x" : 2,
"y" : 1,
"batteryVoltage" : 0,
"orientation" : "NORTH",
"nodeType" : "WIRELESS"
}
],
"height" : 1,
"width" : 3,
"defined" : true,
"lastUpdate" : ISODate("2016-09-29T13:26:40.866Z")
}
什麼?你在控制檯中遇到錯誤嗎? – thanksd
@thanksd沒有錯誤,它只是不保存傳感器的新領域 –
我認爲答案在這裏http://stackoverflow.com/questions/7714216/add-new-field-to-a-collection-in- mongodb – thanksd