Php Mongo DB是否创建一个以日期为键的数组?

Php Mongo DB是否创建一个以日期为键的数组?,php,mongodb,Php,Mongodb,Mongo创建一个以日期为键的数组 [_id] => MongoId Object ( [$id] => 4fcf2f2313cfcd225700000d ) [id] => 14 [name] => Aryan Roban [news] => Array ( [08-06-2012] => 12 ) 这里我想要一个以日期为键的makenewsaarray,以及如何删除一个特定的键行 比如说 我想删除news数组中键为'08-06-2012'

Mongo创建一个以日期为键的数组

[_id] => MongoId Object (
    [$id] => 4fcf2f2313cfcd225700000d
)
[id] => 14
[name] => Aryan Roban
[news] => Array (
    [08-06-2012] => 12
)
这里我想要一个以日期为键的makenewsaarray,以及如何删除一个特定的键行

比如说


我想删除news数组中键为'08-06-2012'的数组元素,我不知道它的值

查找文档不会有问题,这很容易。只需查看
新闻
是否有与您的搜索条件匹配的密钥:

db.foo.find({'news.08-06-2012': {'$exists': true}})
别忘了在
新闻
上添加索引

但删除它们并不容易。还有另一个线程显示了一种方法,但它实际上是一种解决方法:遗憾的是,这只适用于具有数字索引的数组,而不适用于关联数组

也许你可以用自己的新闻收藏?然后您可以轻松地更新和删除它们。否则,您可以从数据库加载完整的文档,在应用程序中处理新闻,然后保存。这需要两个数据库查询,但应该可以工作。

我们可以使用

db.foo.update({/*...*/}, {$unset: {'news.11-06-2012', 1}})

日期不是一个字符串吗?这里有一个可能的解决方法:日期本身。。日期('d-m-Y')或日期('Y-m-d')都可以使数组
news.08-06-2012
今天,明天我想将
news.09-06-2012
添加到同一个新闻数组中。i、 e每天更新新闻数组,但不重置整个新闻数组。。。我使用了
$set
但是它重置了整个新闻数组。使用
$set
添加新闻是可能的:
db.foo.update({/*.*/},{$set:{'news.09-06-2012','whatever'}})
()但是你不能用这种方式轻松删除项目。如果
db.foo.update({/*.*.*/},{$inc{'news.11-06-2012',1})
,,新闻数组是否将创建一个新数组元素作为count?i、 e
[11-06-2012]=>1
到现有数组
db.foo.update({/*…*/},{$unset:{'news.11-06-2012',1}}})
工作得很好…太棒了!最后看起来很棒。:-)