Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.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
Php MongoDB sort()删除不包含';不包含排序筛选器_Php_Javascript_Mongodb - Fatal编程技术网

Php MongoDB sort()删除不包含';不包含排序筛选器

Php MongoDB sort()删除不包含';不包含排序筛选器,php,javascript,mongodb,Php,Javascript,Mongodb,我在使用MongoDB的.sort()时遇到了一个问题,因为它删除了没有排序字段的文档 例如,我有一个文档数组,有些包含“timeSent”字段,有些不包含: db.foo.find() = { "_id": { "$oid" : "51f25e497363055d1fde7524" }, "eventID": 159, "timeSent": 1374844250464 } { "_id": { "$oid" : "51

我在使用MongoDB的.sort()时遇到了一个问题,因为它删除了没有排序字段的文档

例如,我有一个文档数组,有些包含“timeSent”字段,有些不包含:

db.foo.find() = 
    {
      "_id": { "$oid" : "51f25e497363055d1fde7524" },
      "eventID": 159,
      "timeSent": 1374844250464
    }
    {
      "_id": { "$oid" : "51f25e497363055d1fde7525" },
      "eventID": 158,
      "timeSent": 1374844250465
    }
    {
      "_id": { "$oid" : "51f25e497363055d1fde7526" },
      "eventID": 157
    }
使用.sort()删除不存在“timeSent”的文档

db.foo.find().sort({“timeSent”:1}).skip(0).limit(30)

我想知道在Mongo中是否有一种方法可以像SQL一样排序并返回完整的文档。(顶部排序为“timeSent现有”字段,底部排序为“timeSent不存在”。反之亦然,具体取决于ASC或DESC)

谢谢

p、 我们一直在尝试使用MongoCursor在PHP中实现这一点。

Mongo可能在您之前定义的过滤字段上使用了一个索引:确保在光标上使用
explain

您可以告诉Mongo,也可以重建索引,包括不带键的字段(即您)

(对不起,前面的答案,我倒过来了…

Mongo可能在过滤字段上使用了您之前定义的索引:请在光标上使用
解释

您可以告诉Mongo,也可以重建索引,包括不带键的字段(即您)


(对前面的答案感到抱歉,我倒过来了…

您是否尝试过从mongo的控制台进行查找和排序?我做了一个快速测试,结果中显示了缺少字段的文档。我会检查我的mongoDB版本是否是最新的,是否使用了最新的驱动程序。Mongo sort命令即使在没有排序键的地方也会返回文档。谢谢,我已经检查过该版本是否是MongoDB的最新版本。-我发现问题发生在我确定索引时。如果使用下面的命令进行尝试,则会删除不存在密钥的位置。db.foo.ensureIndex({'timeSent':1},{'unique':true,'sparse':true,'dropDups':true})有什么想法吗?@Jason,这就解释了。这就是稀疏索引应该做的。您可能需要重新考虑索引。。如果您希望在该属性中使用索引,可以在没有该属性数据的文档中将其设置为null。您是否尝试过从mongo控制台进行查找和排序?我做了一个快速测试,结果中显示了缺少字段的文档。我会检查我的mongoDB版本是否是最新的,是否使用了最新的驱动程序。Mongo sort命令即使在没有排序键的地方也会返回文档。谢谢,我已经检查过该版本是否是MongoDB的最新版本。-我发现问题发生在我确定索引时。如果使用下面的命令进行尝试,则会删除不存在密钥的位置。db.foo.ensureIndex({'timeSent':1},{'unique':true,'sparse':true,'dropDups':true})有什么想法吗?@Jason,这就解释了。这就是稀疏索引应该做的。您可能需要重新考虑索引。。如果您希望在该属性中包含索引,可以在没有该属性数据的文档中将其设置为null。