Возможно, что-то вроде этого, где ID - ваш ObjectId. Первый {} необходим для идентификации вашего документа. Не требуется использовать ObjectId, если у вас есть еще один уникальный идентификатор в вашей коллекции.
db.collection.update(
{ "_id": ID, "playlists._id": "58"},
{ "$push":
{"playlists.$.musics":
{
"name": "test name",
"duration": "4.00"
}
}
}
)
Я предполагаю, что вторая последняя строка ожидаемого ответа должна оставаться как «Оранжевый 2» для Предмета и типа:
import pandas
df = pandas.DataFrame([['Apple', '10'],
['Orange', '5'],
['Pear', '8'],
['Apple', '10'],
['Pear', '5'],
['Orange', '2'],
['Pear', '5']],
columns = ['Item', 'Type'])
categories = []
for index,row in df.iterrows():
if tuple(row) not in categories:
categories.append(tuple(row))
df["Category"] = [categories.index(tuple(row))+1 for index,row in df.iterrows()]
print(df)
Это даст
Item Type Category
0 Apple 10 1
1 Orange 5 2
2 Pear 8 3
3 Apple 10 1
4 Pear 5 4
5 Orange 2 5
6 Pear 5 4
, поскольку нет специальная операция панд здесь, использование панд не является необходимым (хотя это может быть полезно для других операций). Ключ заключается в том, чтобы определить уникальный список кортежей, который записывает каждую комбинацию Item и Type, и использовать функцию index, чтобы найти ее снова.