mongodb数组查询
伊谢尔伦
伊谢尔伦 2017-04-24 09:11:43
0
2
531
{
    '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伐。

répondre à tous(2)
大家讲道理

 Je ne sais comment y parvenir qu'en utilisant $where, je ne connais pas encore d'autres méthodes.

注意

S'il s'agit d'une requête fréquente, il est fortement déconseillé d'utiliser $where Elle traversera tous les documents, et chaque document sera converti de BSON en un objet JavaScript, puis traité via des expressions, ce qui est beaucoup plus lent que les requêtes régulières. Utilisé uniquement en cas de désespoir. Utilisez d'abord des requêtes régulières pour filtrer, puis utilisez $where. Cette combinaison peut réduire la perte de performances. S'il est possible de filtrer d'abord en utilisant l'index, $where n'est utilisé que pour filtrer davantage les résultats.
——————————————————————————————Extrait de "Le guide faisant autorité sur Mongodb (E2)"

Code :

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: ""}}}}})

Je l'ai testé sur une coque 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 } ] }
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal