So verwende ich pymongo==3.2.1
und Mongo 3.2
aber aus irgendeinem Grund funktioniert meine $addToSet
(um Duplikate zu vermeiden) nicht.
ich sicher, dass meine checked_on
Zeitstempel wie zum Beispiel angepasst ISODate("2016-04-21T00:00:00.000Z")
Meine Struktur ist wie folgt:
{
"_id": ObjectID("57062e357e254255a531165e"),
"availability": [
{
"checked_on": ISODate("2016-04-21T00:00:00.000Z"),
"days": [
{
"available": false,
"day": ISODate("2016-04-29T00:00:00.000Z")
},
{
"available": false,
"day": ISODate("2016-04-30T00:00:00.000Z")
}
]
}
],
"is_active": true,
"updated_on": ISODate("2016-04-21T13:41:12.449Z")
}
Ich habe versucht, beide:
result = self.db[self.collection_name].update_one(
{'_id': doc['_id']},
{
'$addToSet': {
'availability': {
'$each': [
{
'checked_on': datetime.datetime(
date.year, date.month, date.day
),
'days': meta['availability']
}
]
}
},
'$set': {
'is_active': is_active, 'updated_on': date
}
}
)
und
result = self.db[self.collection_name].update_one(
{'_id': doc['_id']},
{
'$addToSet': {
'availability': {
'checked_on': datetime.datetime(
date.year, date.month, date.day
),
'days': meta['availability']
}
},
'$set': {
'is_active': is_active, 'updated_on': date
}
}
)
Aber Duplikate tauchen immer auf, was mache ich falsch?
Was erwarten Sie eigentlich? Punkt ist, dass die mit der Kombination von "checked_on" und "days", die beide der Eigenschaften in den Objekten in der "Menge" sind, wenn diese sich in irgendeiner Weise von etwas unterscheiden, das bereits dort ist, dann ist es tatsächlich ein " Neuer Gegenstand. Also entweder die "checked_on" oder "days" und möglicherweise sogar nur die "set" von "day" -Eigenschaften, die darin enthalten sind, würden eigentlich den "einzigartigen" Gegenstand bezeichnen. '$ AddToSet' kann das nicht verarbeiten, aber wenn Sie uns nicht genau sagen, was genau ein Element als einzigartig definiert, dann kann Ihnen auch niemand helfen. –
@NeilLunn Ich bin mir nicht sicher, ob ich verstehe, was du meinst. all diese Elemente innerhalb der Verfügbarkeit müssen eindeutig zusammen sein – psychok7