Мне нужно экспортировать записи клиентов из базы данных mongoDB. Экспортированные записи клиентов не должны иметь дублирующихся значений. «firstName + lastName + code» является ключом к DE-обнулению записи, и если в базе данных с одним и тем же ключом есть две записи, тогда мне нужно отдавать предпочтение исходному полю со значением, отличным от электронной почты.Запрос MongoDB с условной группой по заявлению
покупатель (id,firstName,lastName,code,source
) сборник это.
Если есть запись 3 записи с таким же уникальным ключом и тремя разными источниками, тогда мне нужно выбрать только одну запись между двумя источниками (ТВ, Интернет) {или если есть n источников, мне нужна только одна запись} не с «электронной почтой» (как электронная почта будет выбрана, когда только одна запись присутствует с уникальным ключом и источником является электронная почта) запроса с использованием:
`db.customer.aggregate([
{ "$match" : { "active" : true , "dealerCode" : { "$in" : [ "111391"]} , "source" : { "$in" : [ "email","TV","internet"]}}},
{$group:{"_id":{
"firstName":"$personalInfo.firstName",
"lastName":"$personalInfo.lastName",
"code":"$vehicle.code"},
"source":{
$addToSet:{"source":"$source"}
}
}
},
{$redact:
{$cond:[{$eq:[{$ifNull:["$source","other"]},"email"]},"$$PRUNE","$$DESCEND"]}
},
{$project:
{"source":
{$map:
{"input":
{$cond:[
{$eq:[{$size:"$source"},0]},[{"source":"email"}],"$source"]
},"as":"inp","in":"$$inp.source"}
},
"record":{"_id":1}
}
} ])`
пример вывод: { "_id" : { "firstName" : "sGI6YaJ36WRfI4xuJQzI7A==", "lastName" : "99eQ7i+uTOqO8X+IPW+NOA==", "code" : "1GTHK23688F113955" }, "source" : [ "internet" ] } { "_id" : { "firstName" : "WYDROTF/9vs9O7XhdIKd5Q==", "lastName" : "BM18Uq/ltcbdx0UJOXh7Sw==", "code" : "1G4GE5GV5AF180133" }, "source" : [ "internet" ] } { "_id" : { "firstName" : "id+U2gYNHQaNQRWXpe34MA==", "lastName" : "AIs1G33QnH9RB0nupJEvjw==", "code" : "1G4GE5EV0AF177966" }, "source" : [ "internet" ] } { "_id" : { "firstName" : "qhreJVuUA5l8lnBPVhMAdw==", "lastName" : "petb0Qx3YPfebSioY0wL9w==", "code" : "1G1AL55F277253143" }, "source" : [ "TV" ] } { "_id" : { "firstName" : "qhreJVuUA5l8lnBPVhMAdw==", "lastName" : "6LB/NmhbfqTagbOnHFGoog==", "code" : "1GCVKREC0EZ168134" }, "source" : [ "TV", "internet" ] }
Это Задайте этот вопрос:
Извинения для комментариев здесь изначально кто-то получил довольно подчеркнул! Я не знаю Монго, но, надеюсь, кто-то сможет ответить на этот вопрос. Я думаю, что здесь достаточно информации, чтобы ответить на этот вопрос. – halfer