mongodb数组查询
伊谢尔伦
伊谢尔伦 2017-04-24 09:11:43
0
2
545
{
    'a': 1, 
    'b':2, 
    'c': 3, 
    'd': [
        {'e': 4, 'f': 5, 'g': 6}, 
        {'e': 0, 'f': '', 'g': 3},
        {'e': 1, 'f': '', 'g': 3},
    ]
}
{
    'a': 1, 
    'b':2, 
    'c': 3, 
    'd': [
        {'e': 4, 'f': '', 'g': 6}, 
        {'e': 0, 'f': '', 'g': 3},
        {'e': 1, 'f': '', 'g': 3},
    ]
} 

这样的记录,问题是怎么获取d数组中f都为空的文档(如上的结果是文档2)?谢谢

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

membalas semua(2)
大家讲道理

 Saya hanya tahu cara mencapai ini menggunakan $where, saya belum tahu tentang kaedah lain lagi.

注意

Jika ia adalah pertanyaan yang kerap, sangat tidak disyorkan untuk menggunakan $where Ia akan merentasi semua dokumen, dan setiap dokumen akan ditukar daripada BSON menjadi objek JavaScript, dan kemudian diproses melalui ungkapan, iaitu. lebih perlahan daripada pertanyaan biasa Hanya digunakan apabila terdesak. Gunakan pertanyaan biasa untuk menapis dahulu, dan kemudian gunakan $where Gabungan ini boleh mengurangkan kehilangan prestasi. Jika boleh untuk menapis menggunakan indeks dahulu, $where hanya digunakan untuk menapis lagi hasil.
——————————————————————————————Dipetik daripada "Panduan Berwibawa untuk Mongodb (E2)"

Kod:

db.collection.find({"$where":function(){
    var d = this.d, i = 0, j = d.length;
    for(i,j;i<j;i++){
        if(d[i].f != "")return false;
    };
    return true;
}});
洪涛
db.demo.find({d: {$not:{$elemMatch: {f: {$ne: ""}}}}})

Mengujinya pada cangkang mongo:

> db.demo.insert({
...     'a': 1,
...     'b':2,
...     'c': 3,
...     'd': [
...         {'e': 4, 'f': '', 'g': 6},
...         {'e': 0, 'f': '', 'g': 3},
...         {'e': 1, 'f': '', 'g': 3},
...     ]
... } )
WriteResult({ "nInserted" : 1 })
> db.demo.insert({
...     'a': 1,
...     'b':2,
...     'c': 3,
...     'd': [
...         {'e': 4, 'f': 5, 'g': 6},
...         {'e': 0, 'f': '', 'g': 3},
...         {'e': 1, 'f': '', 'g': 3},
...     ]
... }
... )
WriteResult({ "nInserted" : 1 })
> db.demo.find({d: {$not:{$elemMatch: {f: {$ne: ""}}}}})
{ "_id" : ObjectId("54129ff745d4261bacca6dcd"), "a" : 1, "b" : 2, "c" : 3, "d" : [ { "e" : 4, "f" : "", "g" : 6 }, { "e" : 0, "f" : "", "g" : 3 }, { "e" : 1, "f" : "", "g" : 3 } ] }
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan