Try using a regular expression.
/^\w{6}/ this says match a word that has 6 word characters at the start of the string.
Example: 
Setup: 
user test;
var createProduct = function(name, barcode){
  return {
    name : name,
    detail: {
      barcode : barcode
    }
  };
};
db.products.drop();
for(var i = 0; i < 10; i++){
  db.products.insert( createProduct( "product" + i, "1234567890".substring(0,i+1) ));
}
Document structure: 
{
    "_id" : ObjectId("540d3ba1242ff352caa6154b"),
    "name" : "product0",
    "detail" : {
        "barcode" : "1"
    }
}
Query:
db.products.find({ "detail.barcode" : /^\w{6}/ })
Output:
{ "_id" : ObjectId("540d3ba1242ff352caa61550"), "name" : "product5", "detail" : { "barcode" : "123456" } }
{ "_id" : ObjectId("540d3ba1242ff352caa61551"), "name" : "product6", "detail" : { "barcode" : "1234567" } }
{ "_id" : ObjectId("540d3ba1242ff352caa61552"), "name" : "product7", "detail" : { "barcode" : "12345678" } }
{ "_id" : ObjectId("540d3ba1242ff352caa61553"), "name" : "product8", "detail" : { "barcode" : "123456789" } }
{ "_id" : ObjectId("540d3ba1242ff352caa61554"), "name" : "product9", "detail" : { "barcode" : "1234567890" } }
However, if barcode is a key within an object inside an array AND you only want the matched barcode values. Then you should use an aggregate function to extract the values.
Setup:
user test;
var createProduct = function(name){
  var o = {
    name : name,
    subProducts: []
  };
  for(var i = 0; i < 10; i++){
    o.subProducts.push({
      barcode : "1234567890".substring(0,i+1)
    });
  }
  return o;
};
db.products.drop();
db.products.insert( createProduct( "newBrand") );
Document Structure:
{
    "_id" : ObjectId("540d4125242ff352caa61555"),
    "name" : "newBrand",
    "subProducts" : [
        {
            "barcode" : "1"
        },
...
        {
            "barcode" : "123456789"
        },
        {
            "barcode" : "1234567890"
        }
    ]
}
Aggregate Query: 
db.products.aggregate([
  { $unwind : "$subProducts" },
  { $match : { "subProducts.barcode" : /^\w{6}/ } }
]);
Output:
{ "_id" : ObjectId("540d4125242ff352caa61555"), "name" : "newBrand", "subProducts" : { "barcode" : "123456" } }
{ "_id" : ObjectId("540d4125242ff352caa61555"), "name" : "newBrand", "subProducts" : { "barcode" : "1234567" } }
{ "_id" : ObjectId("540d4125242ff352caa61555"), "name" : "newBrand", "subProducts" : { "barcode" : "12345678" } }
{ "_id" : ObjectId("540d4125242ff352caa61555"), "name" : "newBrand", "subProducts" : { "barcode" : "123456789" } }
{ "_id" : ObjectId("540d4125242ff352caa61555"), "name" : "newBrand", "subProducts" : { "barcode" : "1234567890" } }
More info: