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

全員に返信(2)
大家讲道理

$where を使用してこれを実装する方法しか知りません。他のメソッドについてはまだ知りません。 $where怎么实现,其他方法我也暂时不知道。

注意

如果是经常性的查询,强烈不建议使用$where,它会遍历所有文档,每个文档都会从BSON转换成javascript对象,然后通过表达式来处理,比常规查询慢很多,只有走投无路时才用。先使用常规查询进行过滤,然后再使用$where,这样组合使用可以降低性能损失。如果可能先使用索引进行过滤,$where
注意

頻繁なクエリの場合、$where を使用することは強くお勧めできません。これはすべてのドキュメントを走査し、各ドキュメントは BSON から JavaScript オブジェクトに変換されます。 、その後、式を通過して処理します。これは通常のクエリよりもはるかに遅いため、どうしても必要な場合にのみ使用する必要があります。最初に通常のクエリを使用してフィルタリングし、次に $where を使用すると、パフォーマンスの低下を軽減できます。最初にインデックスを使用してフィルタリングできる場合、$where は結果をさらにフィルタリングするためにのみ使用されます。

—————————————————————————————『Mongodb 権威ガイド (E2)』より抜粋

🎜 🎜コード: 🎜 リーリー
いいねを押す +0
洪涛

リーリー

mongoシェルでテストしました:

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート