From 27d6415a01c2b3dce388cdab78fb9526d54e3a99 Mon Sep 17 00:00:00 2001 From: Volodymyr Zakhovaiko Date: Fri, 10 Nov 2023 12:34:40 +0100 Subject: [PATCH] Update images on `README.md` (#42) --- README.md | 13 +++++++++++-- graph.png | Bin 8490 -> 0 bytes tree.png | Bin 15179 -> 0 bytes 3 files changed, 11 insertions(+), 2 deletions(-) delete mode 100644 graph.png delete mode 100644 tree.png diff --git a/README.md b/README.md index 7841c6e..dc43f4a 100644 --- a/README.md +++ b/README.md @@ -73,7 +73,12 @@ import { build } from "sparrowql"; Imagine you have a simple db model:
-![Simple graph db model](graph.png) + + + + + Simple db graph model + And a some fixtures for it: @@ -141,7 +146,11 @@ const results = await Posts.aggregate(pipeline).toArray(); SparrowQL works correctly only on [directed trees]() - in this case, you want to create a _query which takes all the posts that were posted on someone's blog and the name of the blog owner_. To make it work, you need to use **aliases**. Here is an example: -![Simple db graph model with aliases](tree.png) + + + + Simple db graph model with aliases + The only thing to do is to create aliases: diff --git a/graph.png b/graph.png deleted file mode 100644 index 35af47c433b2007c6c197c8bb1704871ac5c5324..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8490 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