Skip to content

Instantly share code, notes, and snippets.

Created April 25, 2017 12:28
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
What would you like to do?
// This is a follow on example from @bennadel blogpost
// This uses allDocs() with the keys selector to do a quick find for specific id's.
// It then uses pouchdb-selector-core to further filter the results. pouchdb-selector-core is the library that does the in-memory filtering
// for pouchdb-find and in the changes feed and with replication
// use pouchdb-browser here if you are running this in the browser
var PouchDB = require('pouchdb-node');
var selectors = require('pouchdb-selector-core');
const db = new PouchDB("doc-test");
const selector = {
interests: {
$in: ["Cooking"]
_id: "friend:kim",
name: "Kim",
age: 42,
interests: [ "Movies", "Computers", "Cooking" ],
collection_friend: true
_id: "friend:sarah",
name: "Sarah",
age: 35,
interests: [ "Museums", "Working Out", "Movies" ],
collection_friend: true
_id: "friend:joanna",
name: "Joanna",
age: 29,
interests: [ "Working Out", "Poetry", "Dancing" ],
collection_friend: true
// Let's add some garbage documents as well in order to ensure that
// our subsequent queries don't try to pull back more data that we
// anticipate (ie, none of these documents should show up).
_id: "a",
collection_garbage: true
_id: "z",
collection_garbage: true
.then(resp => {
return db.allDocs({include_docs: true, keys:["friend:kim", "friend:sarah"]})
.then(resp => {
//This creates a new array of just the docs from allDocs and then filters it according to the selector
const docs = => row.doc).filter(doc => selectors.matchesSelector(doc, selector));
console.log('Output', docs);
//Have this here so we can just re-run the code without having to check if the initial docs are loaded
return db.destroy();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment