2015-04-07 2 views
0
{ 
    "_id" : "TestData123", 
    "data" : [ 
     { 
      "ch" : "test1", 
      "prod" : [ 
       { 
        "sid" : "1", 
        "value" : " TV" 
       }, 
       { 
        "sid" : "2", 
        "value" : "amazon", 
       }, 
       { 
        "sid" : "3", 
        "value" : "ebay", 
       }, 
       { 
        "sid" : "4", 
        "value" : "otherthing", 
       } 
      ] 
     }, 
     { 
      "ch" : "test2", 
      "prod" : [ 
       { 
        "sid" : "6", 
        "value" : "TV", 
       }, 
       { 
        "sid" : "7", 
        "value" : "amazon", 
       }, 
       { 
        "sid" : "8", 
        "value" : "ebay", 
       }, 
       { 
        "sid" : "9", 
        "value" : "otherthing", 
       } 
      ] 
     } 
    ] 
} 

У меня есть коллекция mongoDB в вышеуказанном формате. Мне нужно удалить/удалить массив 'prod' в ch: test1 и ch: test2. Также предложите запрос манго для добавления элементов к ним.Извлечение элементов из массива массива: MongoDB

+0

Вы хотите удалить какой-либо элемент из массива или удалить массив? – Indrajeet

+0

Я хочу очистить массив и добавить к нему новые элементы. – Chittprakash

ответ

1

Я очищен и отформатирован BSON объект:

{ 
    "_id":"TestData123", 
    "data":[ 
     { 
     "ch":"test1", 
     "prod":[ 
      { 
       "sid":"1", 
       "value":" TV" 
      }, 
      { 
       "sid":"2", 
       "value":"amazon" 
      }, 
      { 
       "sid":"3", 
       "value":"ebay" 
      }, 
      { 
       "sid":"4", 
       "value":"otherthing" 
      } 
     ] 
     }, 
     { 
     "ch":"test2", 
     "prod":[ 
      { 
       "sid":"6", 
       "value":"TV" 
      }, 
      { 
       "sid":"7", 
       "value":"amazon" 
      }, 
      { 
       "sid":"8", 
       "value":"ebay" 
      }, 
      { 
       "sid":"9", 
       "value":"otherthing" 
      } 
     ] 
     } 
    ] 
} 

Вот еще один StackOverflow сообщение с тем же вопросом:

https://stackoverflow.com/a/6327971/980423

Вы ищете оператора $unset.

db.tmp.update({"_id":"TestData123", "data.ch": "test1"}, {$unset: {"data.$.prod": 1}}); 

Это также сложно, потому что оно находится в массиве.

db.tmp.update({"_id":"TestData123", "data.ch": "test1"}, {$set: {"data.$.prod": <some array>}}); 

Будет ли он снова установлен.

0

Я не уверен, какой язык вы используете, но вот как я буду делать это на C#. Сначала я должен получить документ с идентификатором.

var dbcollection = db.GetCollection(""); 
var document = dbcollection.FindOneById(ObjectId.Parse(id)); 
var query = new QueryDocument { { "_id", ObjectId.Parse(id) } }; 

Затем я обновил документ с модифицированной версией.

BsonArray array = new BsonArray(); //leave empty or add same structure but empty fields 
UpdateBuilder update = new UpdateBuilder(); 
update.Set("data.0.prod", array); 
var result = dbcollection.Update(query, update); 

Это освободит массив. Я не опустошил массив, я только что обновил его, но думаю, что это сработает.

Это также может работать, я еще не проверил его.

dbcollection.Remove(Query.EQ("_id", ObjectId.Parse(id)), document["data"][0]["prod"]); 
Смежные вопросы