title: Automatic Random Test Data Generation of Documents for Seeding a MongoDB Database
body: <p>I'm using JSON Generator <a href="https://next.json-generator.com" rel="nofollow noreferrer">https://next.json-generator.com</a> to seed my MongoDB database. I'm finding trouble to generate a random set (from one to six) of colors out of the predefined group.</p>
  
  <p>I've succeeded to generate all of the other property values but color. I need for the availableColors key to generate a random variable number of colors out of a predefined set of six: "blue", "brown", "green",  "white", "yellow", "gray".</p>
  
  <p>Here is the URL to the online generator where it is possible to real-time edit it: <a href="https://next.json-generator.com/E1g60a1pL" rel="nofollow noreferrer">https://next.json-generator.com/E1g60a1pL</a></p>
  
  <p>Here is the code:</p>
  
  <pre><code>[
    {
      'repeat(5, 10)': {
        id: '{{objectId()}}',
        name: '{{firstName()}}',
        price: '{{floating(5, 4000, 2, "$0,0.00")}}',
        availableColors: (colors) =&gt; {
                 var condition = '{{integer(1, 6)}}';
                 var color = [];
                 for (j = 0; j &lt; condition+1; j++)
                 {color [j] = '{{random("blue", "brown", "green",  "white", "yellow", "gray")}}';}
                 let unique_array = [];
                 for(let i = 0;i &lt; color.length; i++) {
                     if(unique_array.indexOf(color[i]) == -1){
                        unique_array.push(color[i]);
                  }
                 }
                 return unique_array;
  },
        weight: '{{floating(1, 4000, 2, "0.00")}}',
        inStock: '{{integer(0, 2000)}}'
      }
    }
  ]
  </code></pre>
  
  <p>Here is the result I get:</p>
  
  <pre><code>[
    {
      "id": "5ce82b1302c9777aac5fd681",
      "name": "Blake",
      "price": "$389.53",
      "availableColors": [],
      "weight": "3753.22",
      "inStock": 449
    },
    {
      "id": "5ce82b137ab9fe24eda22714",
      "name": "Felicia",
      "price": "$3,190.01",
      "availableColors": [],
      "weight": "3797.51",
      "inStock": 1288
    },
    {
      "id": "5ce82b135414eb7550aee368",
      "name": "Bettye",
      "price": "$227.41",
      "availableColors": [],
      "weight": "2182.52",
      "inStock": 1288
    },
    {
      "id": "5ce82b13f751e63a8506fbf2",
      "name": "Mullen",
      "price": "$3,306.81",
      "availableColors": [],
      "weight": "694.51",
      "inStock": 821
    },
    {
      "id": "5ce82b130544c7c08086a6bc",
      "name": "Angelita",
      "price": "$734.90",
      "availableColors": [],
      "weight": "3.44",
      "inStock": 226
    },
    {
      "id": "5ce82b130d9e2fc4c2a21e22",
      "name": "Mcknight",
      "price": "$3,582.76",
      "availableColors": [],
      "weight": "1183.82",
      "inStock": 1917
    },
    {
      "id": "5ce82b13fb509ee9c384a096",
      "name": "Nannie",
      "price": "$3,479.29",
      "availableColors": [],
      "weight": "754.85",
      "inStock": 716
    },
    {
      "id": "5ce82b13881cb29ec7a1772b",
      "name": "Sutton",
      "price": "$1,726.83",
      "availableColors": [],
      "weight": "1382.76",
      "inStock": 1911
    },
    {
      "id": "5ce82b1386ad13bffcf0923b",
      "name": "Maria",
      "price": "$1,679.58",
      "availableColors": [],
      "weight": "1106.28",
      "inStock": 5
    },
    {
      "id": "5ce82b13fccd87dbe6451971",
      "name": "Noble",
      "price": "$309.25",
      "availableColors": [],
      "weight": "1657.83",
      "inStock": 235
    }
  ]
  </code></pre>
  
  <p>I expect the "availableColors" of any document to be an array of one to six predefined colors. Any idea?</p>