redisredisinsights

What is the correct syntax to filter JSON objects by value of key in Redis Insights?


I have an instance of Redis containing JSON objects.

Example of JSON object:

{
  ...
  description: ""
  metaPublishedOnDiscord: true
  metaIsHot: false
}

I have also an index for these objects called NewsArticles:index.

From redis insights, I want to find all JSON objects containing metaPublishedOnDiscord: false

enter image description here

From in the attached image I am trying to find all objects that have the boolean metaPublishedOnDiscord set to true. @metaPublishedOnDiscord:true on NewsArticle:index doesn't work. What is the correct syntax?

//edit: I created the index using legacy redis-om api.

const Connection = require('./Connection');
const { Schema, Entity } = require('redis-om');

class NewsArticle extends Entity {};

const newsArticleSchema = new Schema(NewsArticle, {
    url: { type: 'string' }, 
    img: { type: 'string' }, 
    title: { type: 'text' },
    description: { type: 'text' },
    content: { type: 'text' },
    tags: { type: 'string[]' },
    cityId: { type: 'string' },
    metaScrapedAtTimestamp: { type: 'date' },
    metaPublishedOnDiscord: { type: 'boolean' },
    metaIsHot: { type: 'boolean' }
});

module.exports = Connection.start().then(c => {
    const newsArticleRepository = c.fetchRepository(newsArticleSchema);
    newsArticleRepository.createIndex();
    return newsArticleRepository;
});

If it helps, the type of the index is STRING, while the type of the indexed object is JSON.

enter image description here


Solution

  • I've found an answer. The correct way is to use this kind of syntax:

    @metaPublishedOnDiscord:{false}
    

    My problem is that i have been missing {} wrapping the value.