0
我有一個像MongoDB的 - 選擇文件凡在現場陣列中的所有值都存在一個給定的數組中
{
foo : [1, 2]
}
{
foo : [2, 3]
}
鑑於像
[2, 3, 4]
我怎麼會只選擇第二個文檔的數組文件?即只選擇foo中的所有值與給定數組中的值匹配的文檔。
我有一個像MongoDB的 - 選擇文件凡在現場陣列中的所有值都存在一個給定的數組中
{
foo : [1, 2]
}
{
foo : [2, 3]
}
鑑於像
[2, 3, 4]
我怎麼會只選擇第二個文檔的數組文件?即只選擇foo中的所有值與給定數組中的值匹配的文檔。
基本上有一些匹配數組的方法。您的需求沒有確切的解決方案。
考慮你有這樣的文件:
{ "_id" : ObjectId("51b05a712961f4704684d901"), "x" : [ 6, 7, 8, 9 ] }
{ "_id" : ObjectId("51b05a712961f4704684d902"), "x" : [ 7, 8, 9, 10 ] }
{ "_id" : ObjectId("51b05a712961f4704684d903"), "x" : [ 8, 9, 10, 11 ] }
您可以使用QUERY1像:
db.collection.find({x:[3,4,5,6]})
結果是精確匹配適用於像X
RESULT1陣列:
{ "_id" : ObjectId("51b05a712961f4704684d8fe"), "x" : [ 3, 4, 5, 6 ] }
QUERY1不會匹配:
{ "_id" : ObjectId("51b05a712961f4704684d8fe"), "x" : [ 3, 4, 5] }
{ "_id" : ObjectId("51b05a712961f4704684d8fe"), "x" : [ 3, 4, 5, 6, 7] }
您可以使用:QUERY2喜歡:
db.t.find({x:{$all:[3,4]}})
RESULT2可以是:
{ "_id" : ObjectId("51b05a722961f4704684daf1"), "x" : [ 3, 4, 5, 6 ] }
{ "_id" : ObjectId("51b05c332961f4704684dce4"), "x" : [ 3, 4, 5 ] }
{ "_id" : ObjectId("51b05c772961f4704684dce5"), "x" : [ 3, 4, 5, 6, 7 ] }
您可以使用:QUERY3喜歡:
Result3看起來像:
{ "_id" : ObjectId("51b05a722961f4704684daf1"), "x" : [ 3, 4, 5, 6 ] }
{ "_id" : ObjectId("51b05a722961f4704684daf2"), "x" : [ 4, 5, 6, 7 ] }
看到這個問題也:mongodb array matching
因此,有一個子集$操作打開/未解決的門票它做什麼,你可能。