2016-04-06 20 views
1

aşağıdaki benzeyen bir Mongo belgesi var gerekiyordu:gömülü listesinde dizisi için sorgulama

{ 
    'foo':1 
    'listOfLists' : [ [1,2],[3,4] ] 
} 

(Evet farkındayım bu değil nasıl "gerçekten" görünüyor ama yeterince basit olmalıdır Açıklama amaçları için.)

Eğer listsOfLists liste nesnesinin [3,4] birleşimini içerip içermediğini kontrol edecek bir sorgu yazmak istemiş olsaydım, bunu nasıl yapabilirim?

Ben

collection.find({'listsOfLists' : {'$elemMatch' : [3,4] } }) 

cevap

1
collection.find({ 'listsOfLists': [3,4] }). 

Bu sadece mülkiyet "doğrudan maçı" gibi bir şey yapabilir misin. MongoDB her dizi elemanına otomatik olarak bakacaktır. Burada $elemMatch'a ihtiyacınız yok. gerçekte eşleşmeleri gerekir "iki veya daha fazla" koşullar olmadığı sürece tabii ki gerekli değildir

collection.find({ 'listsOfLists': { '$elemMatch': { '$eq': [3,4] } } }). 

Ama: Bunu kullanmak için olsaydı

, bu tür $eq olarak, bir operatör ifadesini gerek dizi elemanları. $elemMatch aslında ne içindir.

+0

Yani, ilgili bir öğede. Listedeki ilk öğenin bir sorguyla eşleşip eşleşmediğini görmek için $ elemMatch'i kullanabilir miyim? {'$ ElemMatch': {'$ eq': 3}} gibi bir şey –

+0

@ K.Niemczyk Bu aslında [Sorulacak Başka Bir Soru] olurdu (http://stackoverflow.com/questions/ask), ancak bir mantıklı bir cevapla. Eğer bunu yapamazsan başka bir soru gönderin. –