Чтобы удалить определенный ключ из каждого вложенного документа, вам необходимо пройтись по каждому вложенному документу и удалить из него нужный ключ. Точная реализация может варьироваться в зависимости от используемого вами языка программирования и базы данных. Вот несколько примеров на разных языках:
- JavaScript (Node.js) с MongoDB:
// Assuming you have a collection named 'myCollection' in MongoDB
const MongoClient = require('mongodb').MongoClient;
MongoClient.connect('mongodb://localhost:27017', (err, client) => {
if (err) throw err;
const db = client.db('myDatabase');
const collection = db.collection('myCollection');
collection.updateMany({}, { $unset: { 'subdocument.keyToDelete': 1 } })
.then(() => {
console.log('Key deleted from all subdocuments');
client.close();
})
.catch(err => {
console.error(err);
client.close();
});
});
- Python с MongoDB:
# Assuming you have a collection named 'myCollection' in MongoDB
from pymongo import MongoClient
client = MongoClient('mongodb://localhost:27017')
db = client['myDatabase']
collection = db['myCollection']
collection.update_many({}, { '$unset': { 'subdocument.keyToDelete': 1 } })
print('Key deleted from all subdocuments')
- Python с PyMongo и Elasticsearch:
# Assuming you have an Elasticsearch index and a MongoDB collection named 'myCollection'
from pymongo import MongoClient
from elasticsearch import Elasticsearch
client = MongoClient('mongodb://localhost:27017')
db = client['myDatabase']
collection = db['myCollection']
es = Elasticsearch('localhost:9200')
cursor = collection.find({})
for doc in cursor:
doc_id = doc['_id']
subdocuments = doc['subdocument']
for subdoc in subdocuments:
if 'keyToDelete' in subdoc:
del subdoc['keyToDelete']
collection.update_one({'_id': doc_id}, {'$set': {'subdocument': subdocuments}})
es.update(index='your_index_name', id=str(doc_id), body={"doc": {"subdocument": subdocuments}})
print('Key deleted from all subdocuments')
В приведенных выше примерах «myCollection» представляет собой имя коллекции или таблицы, в которой хранятся ваши документы. «вложенный документ» относится к полю, содержащему вложенные документы, а «keyToDelete» — это конкретный ключ, который вы хотите удалить из каждого вложенного документа.