书籍标签与mongodb(多对多)实现
我试图用python构建一个简单的应用程序,在这里我有与标记关联的标记 鉴于以下数据: 书籍: 我(使用pymongo)将如何找到:书籍标签与mongodb(多对多)实现,mongodb,pymongo,Mongodb,Pymongo,我试图用python构建一个简单的应用程序,在这里我有与标记关联的标记 鉴于以下数据: 书籍: 我(使用pymongo)将如何找到: 所有被标记为“小说”的书 系统中的所有唯一标记 1.按标签查找所有书籍: 如果为字段编制索引,则速度会更快 db.books.ensureIndex({tags: 1}) 2.查找所有唯一的标记 您可以使用map reduce var map = function() { this.tags.forEach(function(t) { emit(t,
db.books.ensureIndex({tags: 1})
2.查找所有唯一的标记
您可以使用map reduce
var map = function() {
this.tags.forEach(function(t) {
emit(t, 1);
})
};
var reduce = function(k, vals) {
return {k, 1}
};
db.books.mapReduce(map, reduce, {out: 'temp_collection_name'});
所有示例都是javascript,它们应该可以立即在MongoShell中工作。我让您阅读pymongo文档并翻译代码片段。为什么要使用mapreduce?为什么不使用db.books.distinct(“标记”)?
distinct
如果标记太多(超过文档限制),将失败。超过150万个标记?
db.books.ensureIndex({tags: 1})
var map = function() {
this.tags.forEach(function(t) {
emit(t, 1);
})
};
var reduce = function(k, vals) {
return {k, 1}
};
db.books.mapReduce(map, reduce, {out: 'temp_collection_name'});