Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 在MongoShell上获取文档的最佳方式是哪种_Mongodb_Mongodb Query - Fatal编程技术网

Mongodb 在MongoShell上获取文档的最佳方式是哪种

Mongodb 在MongoShell上获取文档的最佳方式是哪种,mongodb,mongodb-query,Mongodb,Mongodb Query,1> db.people.find({$and:[{name:{$gt:{$D}},{name:{$regex:{$a}}]}) 2> find({name:{$gt:D',$regex:a}}) 两个MongoDB查询在MongoShell中提供相同的文档。 我想知道哪一个是最佳的,为什么两者应该是相同的。如果在第二次查询中运行explain,您可以看到以下内容以及正在使用的$和运算符 > db.people.find( { name : { $gt : "D", $regex : "a

1> db.people.find({$and:[{name:{$gt:{$D}},{name:{$regex:{$a}}]})

2> find({name:{$gt:D',$regex:a}})

两个MongoDB查询在MongoShell中提供相同的文档。
我想知道哪一个是最佳的,为什么两者应该是相同的。如果在第二次查询中运行explain,您可以看到以下内容以及正在使用的
$和
运算符

> db.people.find( { name : { $gt : "D", $regex : "a" } } ).explain()
{
        "queryPlanner" : {
                "plannerVersion" : 1,
                "namespace" : "test.people",
                "indexFilterSet" : false,
                "parsedQuery" : {
                        "$and" : [
                                {
                                        "name" : {
                                                "$gt" : "D"
                                        }
                                },
                                {
                                        "name" : /a/
                                }
                        ]
                },

两者应该是相同的。如果在第二次查询中运行explain,您可以看到以下内容以及正在使用的
$和
运算符

> db.people.find( { name : { $gt : "D", $regex : "a" } } ).explain()
{
        "queryPlanner" : {
                "plannerVersion" : 1,
                "namespace" : "test.people",
                "indexFilterSet" : false,
                "parsedQuery" : {
                        "$and" : [
                                {
                                        "name" : {
                                                "$gt" : "D"
                                        }
                                },
                                {
                                        "name" : /a/
                                }
                        ]
                },

我不认为你会注意到其中任何一个的性能差异,但第二个更容易阅读——至少对我来说是这样。使用
$regex
不能使用索引,除非它以
^
开头,我不认为您会注意到其中任何一个的性能差异,但第二个更容易阅读——至少对我来说是这样。使用
$regex
不能使用索引,除非它以
^
开头