MongoDB kullanan bir proje üzerinde çalışıyorum, ancak daha önce hiç çalışmamıştım. Javascript kullanarak veritabanını değiştirebileceğinizi anlıyorum. Bazı alanları kaldırır ve bazı diğerleri ekler bir komut dosyası yapılmış, ancak düzgün çalışmıyor:MongoDB dizideki alanları ekleme ve çıkarma
db.floor.save(doc)
denir
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);
});
, benim zemin kaydedilir. Artık tüm karoların tileType
adında bir alanı var, ancak sensörde activated
adında bir alan yok! Tüm sensörler hala state
var. Ne çalışmadığını bilmiyorum, döşeme ve sensör için aynı kodu kullanıyorum. Lütfen yardım et.
Bu kat yapısı şöyledir:
{
"_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")
}
Ne kod isnt çalışma hakkında:
sağ çek olması gerekiyor? Konsolda bir hata mı alıyorsunuz? – thanksd
@thanksd Hata yok, sadece sensörün yeni alanını kaydetmiyor –
Bence cevap burada. Http://stackoverflow.com/questions/7714216/add-new-field-to-a-collection-in- mongodb – thanksd