I think you should require the item names to be symbols, saying "It is an error if items is not a list of symbols."

I'm not sure what happens if one of the pattern bindings of nstore-from or nstore-where is missing one or more of the database items?  Is that a wild card?  Or is it just an error?

If it is an error, then you can dispense with var objectsand switch to a system where any item names left out of a pattern binding indicate they are being queried on.  So given the item names a, b, c, d, e, f and a pattern binding containing values of a, c, f, the result binding will bind b, d, e to the values found in the database.

If you do want wildcard support, you can have a unique object nstore-wildcard, perhaps (define nstore-wildcard (string-copy "*")), and any item name bound to a wildcard can have any value; it is not returned in the result binding.