MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

correspondência de matriz mongodb


Interessante.. O problema é que os operadores $in e $or são aplicados nos elementos do array que você está comparando contra cada documento na coleção, não nos elementos das matrizes nos documentos. Para resumir sua pergunta:Você quer que seja uma correspondência, se algum dos documentos da coleção for um subconjunto da matriz passada. Não consigo pensar em uma maneira de fazer isso, a menos que você troque sua entrada e saída. O que quero dizer é... Vamos pegar sua primeira entrada:

db.test.find( {a: [1,2,3,4]} );

Considere colocar isso em uma coleção temporária, digamos,temp as:

db.temp.save( {a: [1,2,3,4]} );

Agora itere sobre cada documento na coleção de teste e 'encontre-o' em temp, com o operador $all para garantir que ele esteja completamente contido, ou seja, faça algo assim:

foreach(doc in test)
{ db.temp.find( { a: { $all: doc.a } } ); }


Esta é definitivamente uma solução alternativa! Não tenho certeza se estou faltando algum outro operador que possa fazer este trabalho.