对NoSQL键值对执行上下文搜索的正确方法是什么?

时间:2012-01-20 22:38:29

标签: python mysql nosql amazon-dynamodb

使用MySQL,我可以在表格“照片”中搜索以查找匹配的标题,如下所示:

SELECT *
FROM photos
WHERE title LIKE '[string]%';

如果字段“title”被索引,这将相当有效地执行。我甚至可以在标题字段上设置一个FULLTEXT索引来执行子字符串匹配。

使用以下格式对NoSQL的照片表(如亚马逊的DynamoDB)执行类似搜索的好策略是什么?

{key} - > photo_id, {value} - > {photo_id = 2332532532235,                    title ='这是一个标题'}

我想一种方法是搜索每个条目的值的内容并返回匹配。但这似乎效率很低,特别是当数据集非常大时。

提前致谢。

1 个答案:

答案 0 :(得分:1)

我可以给你一个Mongo shell示例。

来自MongoDB网站的基础教程:

j = { name : "mongo" };
t = { x : 3 };
db.things.save(j);
db.things.save(t);

所以你现在有一个叫做东西的集合,并且已经存储了两个文件。

假设您现在想要做相同的

SELECT * FROM things WHERE name like 'mon%'

在SQL中,这会返回“mongo”记录。

在Mongo Shell中,你可以这样做:

db.things.find({name:{$regex:'mon'}}).forEach(printjson);

这将返回“mongo”文档。

希望这有帮助。

Atish