Начиная с MongoDB 2.4 вы можете использовать $ setOnInsert ( http://docs.mongodb.org/manual/reference/operator/setOnInsert/ )
Установить 'insertion_date 'используя $ setOnInsert и' last_update_date ', используя $ set в вашей команде upsert.
Чтобы превратить ваш псевдокод в рабочий пример:
now = datetime.utcnow()
for document in update:
collection.update_one(
{"_id": document["_id"]},
{
"$setOnInsert": {"insertion_date": now},
"$set": {"last_update_date": now},
},
upsert=True,
)
Простой string
это уже действительный JSON. Поскольку вы используете объект String
, вы можете просто установить тело в качестве фактического строкового значения:
let body = words.toString(); // or simply : let body = words; it should work as well IMHO
В качестве примечания, я бы рекомендовал использовать просто string
в качестве типа для [ 114] вместо String
.
Предполагается, что этот последний вариант является обёрткой вокруг string
(однако в C #, однако, string
является псевдонимом для String
, и поэтому они эквивалентны, хотя все же рекомендуется использовать и псевдоним в нижнем регистре). ).
Что случилось ?
Без просмотра реальных данных это могут быть только предположения. Я не могу сказать, является ли это корнем проблемы, но выполнение JSON.stringify
над строкой приведет к тому, что вы отправите строку с двойными двойными кавычками в качестве тела вашего HTTP POST, и, возможно, именно поэтому ваш бэкэнд C # не является доволен этим.