how to define a compound and hashed mongodb index?

According to the hashed index documentaion You can't!

MongoDB supports hashed indexes of any single field. The hashing function collapses sub-documents and computes the hash for the entire value, but does not support multi-key (i.e. arrays) indexes.

You may not create compound indexes that have hashed index fields

PS: The above is valid for versions 2.4 and 2.6 (which is the latest at the moment)

PS2: According to @naman's answer it is now possible in version 4.4


If you want to achieve a compound hashed index, it's feasible with version 4.4 and above. From the documentation, you can now create it as:

db.adminCommand( { setFeatureCompatibilityVersion: "4.4" } )
db.collection.createIndex( { "fieldA" : 1, "fieldB" : "hashed", "fieldC" : -1 } )

for the particular example in question

db.products.ensureIndex( { "item": "hashed", "stock": 1 } )