作者回复: remove是mongo shell下的命令。deleteOne deleteMany是程序语言下的API。做的是类似的事情。
作者回复: db.getCollection("customer") 就是 db.customer db.getCollection("customer').find 就是 db.customer.find()
作者回复: filming_locations 必须是个数组类型。你这个不是数组。
作者回复: $elemMatch表示一个数组元素同时满足两个条件 分开写表示一个元素满足一个条件,另一个元素满足另一个条件也算数 举例来说: db.test.insert({array: [{a: 1, b: 1}, {a: 2, b: 2}]}) db.test.find({"array.a": 1, "array.b": 2}); // 有结果,因为一个元素满足了a=1,另一个元素满足了b=2 db.test.find({array: {$elemMatch: {a: 1, b: 2}}}); // 没有结果,因为没有一个元素同时满足a=1并且b=2
作者回复: 可以尝试 minio
作者回复: 简单来说,wildcard index对于下面这样的结构: { "_id" : 1, "data" : { "a" : 1728, "b" : 6740, "c" : 6481, "d" : 2066, "e" : 3173 } } 可以一条命令(一个索引)同时对a/b/c/d/e 5个字段做索引 db.wildcardIndex.createIndex({"data.$**":1}); 甚至你将来在这个子文档里增加新的字段,也会自动索引。这样省去你单独创建很多个索引。 但是。。。性能上有人测试过,这种比单独建每个索引还是要更加耗资源,差不多是两倍。 所以方便的代价是资源的更多消耗
作者回复: 数据格式转换是4.0才开始支持的功能,本质上所有的转换都可以用`$convert`完成,但是转换为不同的数据类型时又有不同的简化版本。例如`$toInt`,`$toBool`,`$toDate`等。以下以使用最`$toDate`为例举例说明使用方式: ```javascript // 测试数据 db.convertTest.insertMany([{ date: new Date().getTime() }, { date: new Date().getTime() - 3600000 }, { date: new Date().getTime() - 7200000 }]); ``` 在`$project`中直接使用`$toDate`即可将epoch时间转换为日期类型: ```javascript db.convertTest.aggregate([{ $project: { date: { $toDate: "$date" } } }]); ``` 参考: - `$convert`: https://docs.mongodb.com/manual/reference/operator/aggregation/convert/ - `$toInt`: https://docs.mongodb.com/manual/reference/operator/aggregation/toInt/ - `$toBool`: https://docs.mongodb.com/manual/reference/operator/aggregation/toBool/ - `$toDate`: https://docs.mongodb.com/manual/reference/operator/aggregation/toDate/
作者回复: 这个表示查找一个JSON文档,这个文档有一个字段叫做 from, 并且 from字段的内容就是 {country: "China"} ,不多也不少。
作者回复: 4.4 貌似支持了 Query Union,你看看是否可以满足你的需求。 4.4 之前可以用lookup 但是条件是A/B/C之间有类似主外键的关联关系
作者回复: 这个阈值应该是在80%(64MB * 80%)的时候,就会把块一分为二。