Embora eu concorde com sua premissa de que o NoSQL não é uma panacéia para todos os problemas do banco de dados, acho que você entendeu mal um ponto importante.
In NoSQL database you have only one criterion you can search for effectively - the key.
Isso claramente não é verdade.
Por exemplo, o MongoDB suporta índices. (de link )
Indexes support the efficient execution of queries in MongoDB. Without indexes, MongoDB must perform a collection scan, i.e. scan every document in a collection, to select those documents that match the query statement. If an appropriate index exists for a query, MongoDB can use the index to limit the number of documents it must inspect.
Indexes are special data structures [1] that store a small portion of the collection’s data set in an easy to traverse form. The index stores the value of a specific field or set of fields, ordered by the value of the field. The ordering of the index entries supports efficient equality matches and range-based query operations. In addition, MongoDB can return sorted results by using the ordering in the index.
Como o couchbase (do link )
Couchbase views enable indexing and querying of data.
A view creates an index on the data according to the defined format and structure. The view consists of specific fields and information extracted from the objects in Couchbase.
Na verdade, qualquer coisa que se chame um banco de dados NoSQL em vez de um armazenamento de valor-chave deve realmente suportar algum tipo de esquema de indexação.
Na verdade, muitas vezes é a flexibilidade desses esquemas de índice que faz o NoSQL brilhar. Na minha opinião, a linguagem usada para definir os índices do NoSQL geralmente é mais expressiva ou natural que o SQL, e como eles geralmente vivem fora da tabela, você não precisa alterar os esquemas de tabela para suportá-los. (Para não dizer que você não pode fazer coisas parecidas no SQL, mas para mim parece que há muito mais saltos de aros envolvidos).