cat1 ve cat2 kaynağından tam olarak aynı e-postaya sahip belgeleri döndürmek için bir mongo sorgusu yazmaya çalışıyorum.Alt belge dizisi ortak veriler içerdiğinde belgeleri döndürmek için Mongo sorgusu
LütfenLütfen yardım edin. Bu kaynak cat1 ve CAT2 hem ortak bir e-posta adresi [email protected] sahip belgedir çünkü
Numune Toplama
{
"id" : "1",
"name" : "John",
"contacts" : [
{
"type" : "email",
"source": "cat1",
"detail": [email protected]
},
{
"type" : "email",
"source": "cat1",
"detail": [email protected]
},
{
"type" : "email",
"source": "cat2",
"detail": [email protected]
}
]
},
{
"id" : "2",
"name" : "Bell",
"contacts" : [
{
"type" : "email",
"source": "cat1",
"detail": [email protected]
},
{
"type" : "email",
"source": "cat2",
"detail": [email protected]
}
]
},
{
"id" : "3",
"name" : "Sam",
"contacts" : [
{
"type" : "email",
"source": "cat1",
"detail": [email protected]
},
{
"type" : "email",
"source": "cat3",
"detail": [email protected]
}
]
}
Beklenen sonuç takip ediyor beklenen eşleştirme belgeyle bir örnek toplama şema dahil ediyorum .
Her ikisi de cat1 ve cat2 kaynağından gelen e-postaya sahip olmaları nedeniyle e-posta adreslerinin farklı olması nedeniyle, kimliği 2 olan bir belge iade edilmemelidir.
3 numaralı belge, e-posta adreslerinin aynı olması nedeniyle kategorilerinin cat1 ve cat2 olmadığı için döndürülmemelidir.
{
"id" : "1",
"name" : "John",
"contacts" : [
{
"type" : "email",
"source": "cat1",
"detail": [email protected]
},
{
"type" : "email",
"source": "cat1",
"detail": [email protected]
},
{
"type" : "email",
"source": "cat2",
"detail": [email protected]
}
]
}
Ne demek istiyorsun? Her iki belgede aynı "kedi" kaynağına sahip diziler var, o zaman neden sadece bir belge geri dönecek? Bu ikisinin "kesişme" sini temsil etmek mi? Sadece kesişen tek eleman değil, sadece ** "cat1" verileri olabilir mi? Tüm "kavşakları" koleksiyondan mı bekliyorsunuz? Yoksa sadece ilk belgeyle "kavşaklar" ile ilgileniyor musunuz? StackOverflow'a hoş geldiniz. Akranlarınızın sorularını sorduğunuzda bundan daha açık olmalısınız. –
Soru başlığınız, soru içeriğinizle farklı görünüyor. Soru içeriğinizi karşılamak için, '> db.collection.find ({$ ve: [{'contacts.source': 'cat1'}, {'contacts.source': 'cat2'}}}})' aracılığıyla ve operatör. – zangw
@zangw bu, cat1 ve cat2 e-posta adreslerinin her ikisinin de aynı e-posta adresiyle karşılaştırılamamıştır. – Raki